sql >> Base de Datos >  >> RDS >> Mysql

Índices y claves primarias de varias columnas

No estoy íntimamente familiarizado con el funcionamiento interno de los índices en mySql, pero en los dos productos de proveedores de bases de datos con los que estoy familiarizado (MsSQL, Oracle), los índices son estructuras de árbol balanceado, cuyos nodos están organizados como una tupla secuenciada de las columnas que el índice está definido en (En la secuencia definida )

Entonces, a menos que mySql lo haga de manera muy diferente (probablemente no), cualquier índice compuesto (en más de una columna) puede ser utilizable por cualquier consulta que necesite filtrar u ordenar por un subconjunto de las columnas en el índice, siempre que la lista de columnas sea compatible, es decir, si las columnas, cuando están secuenciadas de la misma manera que la lista secuenciada de columnas en el índice completo, es un subconjunto ordenado del conjunto completo de columnas de índice, que comienza al principio de la secuencia de índice real, sin espacios excepto al final...

En otras palabras, esto significa que si tiene un índice en (a,b,c,d) una consulta que filtra en (a), (a,b) o (a,b,c) también puede usar el índice , pero una consulta que necesita filtrar en (b), o (c) o (b,c) no podrá usar el índice...

Entonces, en su caso, si a menudo necesita filtrar u ordenar en la columna elemento solo, necesita agregar otro índice en esa columna por sí mismo...