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

Как да задам и индексирам две колони на T-SQL декларирана променлива на таблица?

Виеможете създайте неклъстъриран индекс, както следва.

DECLARE @t TABLE (
  PK   INT IDENTITY(1, 1) PRIMARY KEY CLUSTERED,
  Col1 INT,
  Col2 INT,
  UNIQUE (Col1, Col2, PK)) 

Ако намерението е Col1, Col2 сами по себе си са уникални, след което премахнете PK от списъка с колони.

Въпреки че изглежда по номинална стойност, сякаш това е добавило допълнителна колона в (PK ) структурата на индекса ще бъде същата като създаването на неуникален индекс само върху Col1, Col2 на #temp таблица.

CREATE TABLE #T  (
  PK   INT IDENTITY(1, 1) PRIMARY KEY CLUSTERED,
  Col1 INT,
  Col2 INT) 

/*PK added in to end of key anyway*/  
CREATE NONCLUSTERED INDEX ix ON #T(Col1, Col2)

за неуникален неклъстерен индекс SQL Server винаги добавя имплицитно CI ключа към NCI ключа така или иначе. Това просто го показва изрично.

Вижте Kalen Delaney Повече за Неклъстерирани индексни ключове



  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. Как CAST() работи в SQL Server

  3. Грешка при промяна на типа на курсора в резултатите от функцията за добавяне на дата на Perl OLE32 MSSQL

  4. Можете ли да имате логика if-then-else в SQL?

  5. Как да филтрирате редове с нулеви стойности в изявление за избор в SQL Server - SQL Server / TSQL урок, част 110