La documentación de MySQL hace un buen trabajo al explicar cómo funcionan los índices de varias columnas aquí .
En general, el índice se puede usar para un where cláusula cuando algún número de columna en el más a la izquierda lado del índice tienen condiciones de igualdad. Tu where Las cláusulas usan las siguientes columnas:
- c1, c2
- c1, c2, c3, c4
- c1, c2
- c1, c2, c5
Cualquier índice que comience con las columnas c1 y c2 normalmente se usaría para estas consultas. MySQL puede aplicar otras condiciones al uso del índice, como la selectividad. Es decir, si c1 y c2 tienen valores constantes (por ejemplo), entonces usar un índice no beneficiará la consulta.
Para optimizar todas estas combinaciones, puedes crear dos índices:c1, c2, c3, c4 y c2, c1, c5 . La razón para intercambiar c1 y c2 en el segundo índice es para que pudiera manejar consultas donde la condición está en c2 pero no c1 , así como al revés.