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

SQL Server 2005 кешира план за изпълнение, който никога не може да работи

Може да се интересувате от Първо правило за програмиране .

Клъстърираният индекс винаги включва всички редове. Може да бъде подредено по z , но пак ще съдържа всички други колони на ниво лист.

Причината, поради която SQL Server понякога предпочита клъстерно сканиране пред търсене на индекс, е следната. Когато извършвате търсене в индекс, трябва да го последвате с търсене в отметка към клъстерния индекс, за да извлечете колони, които не са в индекса.

Когато правите сканиране на клъстерен индекс, вие по дефиниция намирате всички колони. Това означава, че не е необходимо търсене на отметки.

Когато SQL Server очаква много редове, той се опитва да избегне търсенето на отметки. Това е изпитан във времето избор. Търсенето на неклъстерен индекс рутинно се изпреварва от сканиране на клъстерен индекс.

Можете да тествате това за вашия случай, като принудите или с with (index(IX_YourIndex)) подсказка за заявка .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да генерирате поле за автоматично увеличение в заявка за избор

  2. Пример за CTE и рекурсия на SQL Server

  3. Използване на групиране на отчети и връзки

  4. Тригерът на SQL Server AFTER INSERT не вижда току-що вмъкнатия ред

  5. Как да премахнете или изтриете всички тригери от база данни в SQL Server