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

Índices múltiples de MySQL frente a índice de varias columnas para buscar

Debe comprender que MySQL (en el caso de InnoDB) solo usa el prefijo más a la izquierda de sus índices. Entonces, si el índice está en Field1 + Field2, consultar solo con Field2 en WHERE no puede hacer uso de todo el índice.

Y si Field1 + Field2 + Field3 es el índice, una consulta con solo Field1 & Field3 en DONDE pasaría lo mismo.

Opción 1

Tendría que crear un índice separado para cada escenario de búsqueda si desea optimizar cada búsqueda. Sin embargo, si las tablas son grandes, los índices también serían extremadamente grandes. Si esas consultas de búsqueda se realizan con mucha frecuencia, valdría la pena.

Opción 2

Puede usar un truco ingenioso si sus búsquedas tienen una selectividad baja (es decir, Género) colocando las columnas de baja selectividad más a la izquierda y usando Gender IN(M, F) para incluirlo en el DÓNDE cláusula junto con la(s) otra(s) columna(s) para hacer uso de todo el índice.