sql >> Database teknologi >  >> RDS >> Sqlserver

Hvor vigtig er rækkefølgen af ​​kolonner i indekser?

Se på et indeks som dette:

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

Se, hvordan begrænsning på A først, da din første kolonne eliminerer flere resultater end begrænsning på din anden kolonne først? Det er nemmere, hvis du forestiller dig, hvordan indekset skal krydses på tværs, kolonne 1, derefter kolonne 2, osv...du kan se, at det at afskære de fleste resultater i nævepasningen gør 2. trin så meget hurtigere.

Et andet tilfælde, hvis du spurgte i kolonne 3, ville optimeringsværktøjet ikke engang bruge indekset, fordi det overhovedet ikke er nyttigt til at indsnævre resultatsættene. Hver gang du er i en forespørgsel, betyder det bedre ydeevne at indsnævre antallet af resultater, der skal håndteres, før det næste trin.

Da indekset også er gemt på denne måde, er der ingen tilbagesporing på tværs af indekset for at finde den første kolonne, når du forespørger på den.

Kort sagt:Nej, det er ikke til at se, der er reelle præstationsfordele.



  1. Sådan optimerer du brugen af ​​OR-klausulen, når den bruges med parametre (SQL Server 2008)

  2. MySQL Bestil før gruppe efter

  3. Benchmarking Managed PostgreSQL Cloud Solutions - Google Cloud:Tredje del

  4. Oracle :vælg maksimal værdi fra forskellige kolonner i samme række