Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come impostare e indicizzare su due colonne della variabile di tabella dichiarata T-SQL?

puoi creare un indice non cluster come segue.

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

Se l'intenzione è quella Col1, Col2 sono univoci, quindi rimuovi PK dall'elenco delle colonne.

Sebbene appaia al valore nominale come se questo avesse aggiunto una colonna aggiuntiva in (PK ) la struttura dell'indice sarà la stessa della creazione di un indice non univoco solo su Col1, Col2 su un #temp tabella.

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)

per un indice non univoco non cluster, SQL Server aggiunge sempre la chiave CI alla chiave NCI in modo implicito. Questo lo mostra esplicitamente.

Vedi Kalen Delaney Ulteriori informazioni Chiavi di indice non cluster