sql >> Base de Datos >  >> RDS >> Sqlserver

¿Qué tan importante es el orden de las columnas en los índices?

Mire un índice como este:

Cols
  1   2   3
-------------
|   | 1 |   |
| A |---|   |
|   | 2 |   |
|---|---|   |
|   |   |   |
|   | 1 | 9 |
| B |   |   |
|   |---|   |
|   | 2 |   |
|   |---|   |
|   | 3 |   |
|---|---|   |

¿Ves cómo la restricción en A primero, ya que tu primera columna elimina más resultados que la restricción en tu segunda columna primero? Es más fácil si se imagina cómo se debe recorrer el índice, la columna 1, luego la columna 2, etc. Verá que cortar la mayoría de los resultados en el primer pase hace que el segundo paso sea mucho más rápido.

Otro caso, si consultó en la columna 3, el optimizador ni siquiera usaría el índice, porque no es útil en absoluto para reducir los conjuntos de resultados. Cada vez que se encuentra en una consulta, reducir la cantidad de resultados que debe tratar antes del siguiente paso significa un mejor rendimiento.

Dado que el índice también se almacena de esta manera, no hay vuelta atrás en el índice para encontrar la primera columna cuando lo consulta.

En resumen:no, no es para mostrar, hay beneficios de rendimiento reales.