Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Quão importante é a ordem das colunas nos índices?


Veja um índice como este:
Cols
  1   2   3
-------------
|   | 1 |   |
| A |---|   |
|   | 2 |   |
|---|---|   |
|   |   |   |
|   | 1 | 9 |
| B |   |   |
|   |---|   |
|   | 2 |   |
|   |---|   |
|   | 3 |   |
|---|---|   |

Veja como restringir primeiro A, já que sua primeira coluna elimina mais resultados do que restringir sua segunda coluna primeiro? É mais fácil se você imaginar como o índice deve ser percorrido, coluna 1, coluna 2, etc... você verá que cortar a maioria dos resultados na primeira passagem torna o 2º passo muito mais rápido.

Outro caso, se você consultasse na coluna 3, o otimizador nem usaria o índice, porque não ajuda em nada a restringir os conjuntos de resultados. Sempre que estiver em uma consulta, restringir o número de resultados a serem tratados antes da próxima etapa significa melhor desempenho.

Como o índice também é armazenado dessa maneira, não há retrocesso no índice para encontrar a primeira coluna quando você a consulta.

Resumindo:Não, não é para mostrar, há benefícios reais de desempenho.