2011-11-03 24 views
43

He leído en algunos blogs y en algunos artículos relacionados con la optimización, cómo optimizar las consultas. Leí que necesito usar índices y asegurarme de que todas las claves externas y externas se configuran correctamente usando un buen esquema de base de datos relacional.MySQL explicar Comprensión de la comprensión

ahora tengo una consulta que necesito para optimizar y me sale esto en el EXPLAIN:

Using where; Using temporary; Using filesort 

estoy usando MySQL 5.5

Sé que estoy usando WHERE pero no con mi tabla temporal ni filesort? ¿Qué significa esto?

+4

pegue su consulta. – DRapp

Respuesta

32

El uso temporal significa que MySQL necesita utilizar algunas tablas temporales para almacenar datos intermedios calculados al ejecutar su consulta.

El uso de filesort es un algoritmo de clasificación en el que MySQL no puede usar un índice para ordenar y, por lo tanto, no puede hacer el ordenamiento completo en la memoria. En su lugar, divide el género en trozos más pequeños y luego combina los resultados para obtener los datos finales ordenados.

Consulte http://dev.mysql.com/doc/refman/5.0/en/explain-output.html.

Creo que es posible que esté utilizando un ORDER BY más alguna tabla derivada o subconsulta. Sería genial si pudiera pegar su consulta y la información relevante de tablas/índices y la salida EXPLAIN.

+0

Gracias por la información – Ken

5

Sintaxis:

Explain `MySQL Query` 

Ejemplo:EXPLAIN SELECT * FROM categoriesG

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

Explique siguieron con su consulta MySQL

Better explained in details here