Sí, MySQL puede usar un índice en las columnas en ORDER BY (bajo ciertas condiciones). Sin embargo, MySQL no puede usar un índice para ASC mixto , orden DESC por ( SELECT * FROM foo ORDER BY bar ASC, pants DESC
). Compartir su consulta y la declaración CREATE TABLE nos ayudaría a responder su pregunta más específicamente.
Para obtener sugerencias sobre cómo optimizar las cláusulas ORDER BY:
http://dev.mysql.com/doc/refman/5.1/en/order-by-optimization.html
Editar 2012-01-21 8:53 AM
Hubo preguntas sobre el origen de mi declaración sobre el uso de un índice con ASC / DESC mixto en ORDER BY. De la documentación de ORDER BY Optimization :
En algunos casos, MySQL no puede usar índices para resolver ORDER BY, aunque todavía usa índices para encontrar las filas que coinciden con la cláusula WHERE. Estos casos incluyen lo siguiente:
...
Mezclas ASC y DESC:
SELECCIONAR * DESDE t1 ORDER BY key_part1 DESC, key_part2 ASC;
...
Además, la palabra clave DESC no tiene sentido en CREATE INDEX
Una especificación index_col_name puede terminar con ASC o DESC. Estas palabras clave están permitidas para futuras extensiones para especificar el almacenamiento de valor de índice ascendente o descendente. Actualmente, se analizan pero se ignoran; los valores de índice siempre se almacenan en orden ascendente.