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

Индексна ключова колона СРЕЩУ включена в индекс колона

Ключовите колони на индекса са част от b-дървото на индекса. Включените колони не са.

Вземете два индекса:

CREATE INDEX index1 ON table1 (col1, col2, col3)
CREATE INDEX index2 ON table1 (col1) INCLUDE (col2, col3)

index1 е по-подходящ за този вид заявка:

SELECT * FROM table1 WHERE col1 = x AND col2 = y AND col3 = z

Докато index2 е по-подходящ за този вид заявка:

SELECT col2, col3 FROM table1 WHERE col1 = x

В първата заявка, index1 предоставя механизъм за бързо идентифициране на интересните редове. Заявката (вероятно) ще се изпълни като търсене в индекс, последвано от търсене в отметка за извличане на пълния ред(ове).

Във втората заявка, index2 действа като покриващ индекс. SQL Server изобщо не трябва да удря основната таблица, тъй като индексът предоставя всички данни, от които се нуждае, за да удовлетвори заявката. index1 може също да действа като покриващ индекс в този случай.

Ако искате покриващ индекс, но не искате да добавите всички колони към b-дървото, защото не търсите по тях или не можете, защото те не са разрешен тип данни (напр. XML), използвайте Клауза INCLUDE.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не мога да изпълня ORDERBY срещу моите EF4 данни

  2. sql изберете 3 колони и дедупирайте две колони

  3. Как да използвате съхранена процедура в конфигурацията на log4net за SQL Server за регистриране

  4. Сравнение на дата и час на SQL Server в различни формати

  5. SQL SELECT ЧЧ:ММ - ЧЧ:ММ