Un índice de varias columnas no es conceptualmente diferente de tomar todos los campos de columnas y concatenarlos juntos, indexando el resultado como un solo campo.
Dado que los índices son b-trees, siempre se buscan de izquierda a derecha. Debe comenzar su búsqueda desde la izquierda para emparejar los resultados mientras se mueve hacia la derecha para que el índice haga su trabajo y brinde resultados útiles.
Con sólo un único campo indexado:
WHERE val1 LIKE 'myvalue%' (uses index)
WHERE val1 LIKE '%myvalue' (cannot use index)
Se aplica el mismo concepto para los índices de varias columnas:
Cuando orden es val1, val2
WHERE val1='value1' (uses index)
WHERE val2='value2' (cannot use index)
Cuando la orden es val2 , val1
WHERE val1='value1' (cannot use index)
WHERE val2='value2' (uses index)
Si ambos campos coinciden, el orden exacto de los índices no importa en ese caso.
WHERE val1='value1' AND val2='value2' (uses index in any order)
Su analogía en un índice compuesto me ayudó a entender la diferencia con mucha facilidad. Gracias, Mitch. – Sung
Muy buena respuesta. +1 – spender