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

Jak ustawić i zaindeksować na dwóch kolumnach zadeklarowaną w T-SQL zmienną tabeli?

możesz utwórz indeks nieklastrowany w następujący sposób.

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

Jeśli intencją jest, aby Col1, Col2 są unikalne, a następnie usuń PK z listy kolumn.

Chociaż wygląda na to, że jest to wartość nominalna, jakby dodano dodatkową kolumnę w (PK ) struktura indeksu będzie taka sama, jak przy tworzeniu nieunikalnego indeksu tylko dla Col1, Col2 na #temp tabeli.

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)

dla nieunikatowego indeksu nieklastrowanego SQL Server zawsze i tak niejawnie dodaje klucz CI do klucza NCI. To tylko wyraźnie to pokazuje.

Zobacz Kalen Delaney Więcej informacji Nieklastrowane klucze indeksujące



  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 wybrać dane z 30 dni?

  2. Rekurencyjne sortowanie menu SQL

  3. Różnica między dodawaniem parametrów do procedury składowanej w SQL Server?

  4. Data w IST w SQL Server

  5. Jak utworzyć listę rozdzielaną przecinkami za pomocą zapytania SQL?