+ Rispondi alla Discussione
Risultati da 1 a 6 di 6

Limitare la ricerca in una query MySQL

Ultimo Messaggio di trhacker il:
  1. #1
    User
    Data Registrazione
    Jan 2007
    Messaggi
    17

    Limitare la ricerca in una query MySQL

    Salve a tutti, ho una domanda per ottimizzare il tempo necessario per effettuare alcune query.
    E' possibile limitare la ricerca ad un dato numero di record estratti?
    Mi spiego meglio: voglio dire al database, trova i primi 10 record che soddisfano determinati criteri, e quando li hai trovati, interrompi la ricerca.
    Ci sarebbe la clausola LIMIT, ma questa agisce solo sulla visualizzazione dei record trovati, in sostanza limita solo il numero di record che vengono visualizzati, ma la query portata a termine fino in fondo.
    Esiste invece una qualche procedura per interrrompere la ricerca una volta trovato il num. di record specificato, in modo da rendere la query pi veloce? Magari con un WHERE? boh

  2. #2
    User L'avatar di 4ustat
    Data Registrazione
    Feb 2007
    Messaggi
    94
    non e' necessaria, nel senso che la se fai al ricerca su campi chiave, una volta che ha trovato i record corrispondenti si ferma non si analizza tutta/ la tabella.

    inoltre puoi avere una idea del numero di righe analizzate usando explain

  3. #3
    User
    Data Registrazione
    Jan 2007
    Messaggi
    17
    Ho una domanda che si ricollega a questo.

    Ho una tabella INNO_DB in MySQL che potr arrivare ad avere circa 50000 records, da cui ho bisogno di estrarre i totali degli importi degli articoli.
    Considerando che ogni articolo pu essere ripetuto pi volte (diciamo in media fino a 5 volte), ed contraddistinto da un ID indicizzato, dovrei calcolare con una SELECT SUM il totale importo per ogni articolo.

    Quindi, se lID indicizzato, facendo
    SELECT SUM(importo) FROM tabella WHERE id=x
    dovrebbero essere analizzati solo i campi per i quali la clausola WHERE soddisfatta, dato che ID un indice: in questo modo verranno analizzati solo 5 campi di media e non 50000, giusto?

    Ho provato ad utilizzare EXPLAIN SELECT SUM, e mi indica ROWS 4: questo dato dovrebbe essere il numero effettivo di rows analizzate, giusto? che corrisponde con i campi effettivamente interessati dalla SELECT SUM, cio i campi che soddisfano la condizione WHERE
    Infatti se faccio EXPLAIN SELECT SUM, utilizzando come campo condizionale nella clausola WHERE un campo non indicizzato, ROWS restituisce il numero totale di campi nella tabella.

    In ultima analisi, facendo la query su un campo indicizzato, non vengono analizzate tutte le righe, giusto? quindi il carico di lavoro per il database trascurabile (almeno nel mio caso con poche ripetizioni per ogni articolo)

    Ho ragione?

    Possibili risposte:
    1) S, sei un grande, hai capito tutto di MySQL
    2) Hai ragione fino a un certo punto...
    3) Non hai capito un accidenti
    4) Ma di ke stai a parl?
    5) Con questa bella giornata, non te ne potevi andare al mare?

    PS Scusate l'esaurimento

  4. #4
    User L'avatar di 4ustat
    Data Registrazione
    Feb 2007
    Messaggi
    94
    1 :d

  5. #5
    User Attivo L'avatar di probid
    Data Registrazione
    Aug 2006
    Localit
    Foligno (PG)
    Messaggi
    1,822
    Io opto per la 5 ...
    no scherzo...hai capito tutto di come funziona mysql
    Moderatore in pensione

  6. #6
    User
    Data Registrazione
    Jan 2007
    Messaggi
    17
    Grazie, sapevo di essere un genio

+ Rispondi alla Discussione

Tag per Questa Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] Attivato
  • Il codice [VIDEO] Attivato
  • Il codice HTML Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.