2011-07-28 13 views
8

¿Utiliza una especie un índice de MySQL si hay un índice en la columna de ordenación? Además, ¿para qué otras cosas se usa el índice?¿El índice de uso de MySQL para la clasificación ...

Qué diferencia hace en unos índices combinados y separados de las columnas?

+0

[Order By Optimization] (http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html) – Jacob

+0

Ordenar en mysql mediante índice no es tan trivial como agregar un índice en una columna usado para ordenar Leer en: https://www.percona.com/blog/2006/09/01/mysql-order-by-limit-performance-optimization/ http://dev.mysql.com/doc/refman /5.7/en/order-by-optimization.html también MySQL puede utilizar sólo 1 por índice de consulta de modo índice sabiamente. –

Respuesta

19

Sí, MySQL utiliza el índice para clasificar la información cuando la orden es por la columna ordenada.

Además, si tiene índices en todas las columnas que ha agregado a la cláusula SELECT, MySQL no cargará los datos de la tabla en sí, sino del índice (que es más rápido).

La diferencia entre los índices combinados y separados es que MySQL no puede usar más de un índice por consulta, por lo tanto, si su consulta se filtra por muchas columnas y le gustaría tenerlo correctamente indexado, necesitará crear un índice combinado de todas las columnas.

Pero antes de añadir una gran cantidad de índices a las tablas, recuerde que cada índice hace insertar/actualizar/borrar operaciones van más lento.

También recomendaría altamente el libro High Performance MySQL por O'Reilly que cubrirá en profundidad todas estas cuestiones y muchas otras sugerencias le necesidad saber para ser realmente capaces de utilizar MySQL al límite.

+0

gracias por responder a todas mis preguntas .... 1 voto y respuesta seleccionada para usted. – Anush

+1

El optimizador de mysql combina diferentes índices si acelera la consulta y, por lo tanto, MySQL puede usar múltiples índices para una única consulta, al menos en las últimas versiones. – Kiran

1

Los índices se utilizan no sólo para la clasificación, pero para la selección.

E.g. select * from mytable where id = 1 usará un índice en la columna de id si hay uno.

Cuestiones relacionadas