Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak ważna jest kolejność kolumn w indeksach?

Spójrz na taki indeks:

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

Zobacz, jak ograniczenie w pierwszej kolumnie, ponieważ pierwsza kolumna eliminuje więcej wyników niż ograniczanie w pierwszej kolumnie? Łatwiej jest sobie wyobrazić, jak indeks musi przechodzić przez kolumnę 1, potem kolumnę 2 itd. Widzisz, że obcinanie większości wyników w pierwszym przejściu sprawia, że ​​drugi krok jest o wiele szybszy.

Inny przypadek, jeśli zapytasz o kolumnę 3, optymalizator nie użyłby nawet indeksu, ponieważ nie jest on w ogóle pomocny w zawężaniu zbiorów wyników. Zawsze, gdy pojawiasz się w zapytaniu, zawężenie liczby wyników, którymi trzeba się zająć przed następnym krokiem, oznacza lepszą wydajność.

Ponieważ indeks jest również przechowywany w ten sposób, nie ma możliwości cofania się w całym indeksie w celu znalezienia pierwszej kolumny podczas wykonywania zapytania.

W skrócie:nie, to nie na pokaz, są realne korzyści w zakresie wydajności.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak @@MAX_CONNECTIONS działa w SQL Server

  2. Co to jest @@MAX_PRECISION w programie SQL Server?

  3. SqlBulkCopy z listy<>

  4. Dlaczego nie ma funkcji okienkowych w klauzulach where?

  5. Jak włączyć uprawnienia zbiorcze w SQL Server