Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Колко важен е редът на колоните в индексите?

Вижте индекс като този:

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

Вижте как ограничавате първо за А, тъй като първата ви колона елиминира повече резултати, отколкото ограничаването на втората колона първо? По-лесно е, ако си представите как индексът трябва да се премине през колона 1, след това колона 2 и т.н....виждате, че отрязването на повечето от резултатите при първото преминаване прави втората стъпка много по-бърза.

Друг случай, ако сте направили заявка в колона 3, оптимизаторът дори няма да използва индекса, защото изобщо не е полезен за стесняване на наборите от резултати. Всеки път, когато сте в заявка, стесняването на броя на резултатите, с които трябва да се справите преди следващата стъпка, означава по-добра производителност.

Тъй като индексът също се съхранява по този начин, няма връщане назад в индекса, за да намерите първата колона, когато правите заявка към нея.

Накратко:Не, не е за шоу, има реални ползи за производителността.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TSQL md5 хеш, различен от C# .NET md5

  2. Как да използвате функциите на SQL Server AlwaysOn

  3. Масово вмъкване на файлове с данни в SQL Server

  4. Какво представлява ограничението на първичния ключ в базата данни на SQL Server - SQL Server / T-SQL урок, част 54

  5. Какъв размер използвате за varchar(MAX) във вашата декларация за параметри?