2011-11-03 4 views
43

Ho letto su alcuni blog e in alcuni articoli relativi all'ottimizzazione, come ottimizzare le query. Ho letto che devo usare gli indici e assicurarmi che tutta la mia chiave primaria e le chiavi esterne siano impostate correttamente usando un buon schema di database relazionale.MySQL spiegare Comprensione delle query

ora ho una domanda che ho bisogno di ottimizzare e ottengo questo sul EXPLAIN:

Using where; Using temporary; Using filesort 

Sto usando MySQL 5.5

So che sto usando WHERE ma non con la mia tabella temporanea né filesort? Cosa significa questo?

+4

incolla la tua richiesta. – DRapp

risposta

32

Utilizzare temporaneamente significa che MySQL deve utilizzare alcune tabelle temporanee per la memorizzazione dei dati intermedi calcolati durante l'esecuzione della query.

L'utilizzo di filesort è un algoritmo di ordinamento in cui MySQL non è in grado di utilizzare un indice per l'ordinamento e pertanto non può eseguire l'ordinamento completo in memoria. Al contrario, suddivide l'ordinamento in blocchi più piccoli e quindi unisce i risultati per ottenere i dati ordinati finali.

Si prega di fare riferimento a http://dev.mysql.com/doc/refman/5.0/en/explain-output.html.

Penso che potresti utilizzare un ORDER BY più una tabella derivata o una sottoquery. Sarebbe fantastico se potessi incollare la tua query e le relative informazioni su tabelle/indici e l'output di EXPLAIN.

+0

Grazie per l'informazione – Ken

5

Sintassi:

Explain `MySQL Query` 

Esempio:EXPLAIN SELECT * FROM categoriesG

Esempio:EXPLAIN EXTENDED SELECT City.Name FROM City JOIN Country ON (City.CountryCode = Country.Code) WHERE City.CountryCode = 'IND' AND Country.Continent = 'Asia'G

Spiegami seguita con la query mysql

Better explained in details here