sql - uso - Orden del índice en columnas múltiples
usar indices en consulta sql (3)
Solo una pregunta simple, pero ¿importa el orden de su índice cuando se extiende sobre varias columnas?
Por ejemplo, tomando la consulta:
SELECT * FROM my_table WHERE (column_1 = 1 AND column_2 = 2)
Si quiero agregar un índice para una consulta como esta, importa si mi índice se crea así:
CREATE INDEX my_index ON my_table (column_1, column_2)
O así:
CREATE INDEX my_index ON my_table (column_2, column_1)
¡Gracias por la ayuda!
En el ejemplo que das, el orden de las columnas no importa.
Importa si usted ordena en una columna; se puede utilizar un índice en (col1,col2)
para ORDER BY col1, col2
pero no para ORDER BY col2, col1
.
Para las cláusulas WHERE
, un índice en (col1, col2)
funciona para WHERE col1 = 1 AND col2 = 1
. También funciona para WHERE col1 = 1
. Pero no puede ayudar con WHERE col2 = 1
.
Este shoudl te dará una buena idea.
Índice agrupado de SQL Server: orden de la pregunta de índice
Hay muchos más como este en SO.
La mejor manera de averiguarlo es medirlo. Pruebe uno, mida el rendimiento, luego elimine ese índice y pruebe el otro. Normalmente, los datos que se consultan se encuentran juntos en el índice en el disco, y el orden de las columnas en el índice hace una diferencia en la forma en que se almacena en el disco. Es muy difícil adivinar exactamente qué combinación de índices funcionará mejor, así que pruebe algunas posibilidades diferentes y mida para descubrir cuál es la mejor para sus datos.