He agregado índices a la tabla que se utilizan para buscar resultados. Estoy mostrando resultados por orden ASC o DESC. Entonces, ¿esa columna debe tener índice o no? Tengo 2 índices más en esa tabla. ¿Cómo afectará el rendimiento al hacer o no hacer un índice en esa columna?
mysql
performance
index
order-by
Somnath Muluk
fuente
fuente
Respuestas:
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 :
Además, la palabra clave DESC no tiene sentido en CREATE INDEX
fuente
CREATE INDEX idx_foo ON foo(bar ASC, pants DESC);
Deberia trabajar.ASC
yDESC
si elINDEX
tiene la misma mezcla.Para cualquiera que se pregunte sobre la respuesta en relación con PostgreSQL, la respuesta es sí, se utilizará un índice. Según la documentación de PostgreSQL, el planificador de consultas "considerará satisfacer una especificación ORDER BY, ya sea escaneando un índice disponible que coincida con la especificación, o escaneando la tabla en orden físico y haciendo una ordenación explícita". Esto significa que si hay un índice que el planificador puede usar, lo hará, volviendo a ordenar después de recuperar las filas coincidentes.
fuente