Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como definir e indexar em duas colunas da variável de tabela declarada T-SQL?


Você pode crie um índice não clusterizado da seguinte maneira.
DECLARE @t TABLE (
  PK   INT IDENTITY(1, 1) PRIMARY KEY CLUSTERED,
  Col1 INT,
  Col2 INT,
  UNIQUE (Col1, Col2, PK)) 

Se a intenção é que Col1, Col2 são únicos, remova PK da lista de colunas.

Embora pareça pelo valor de face como se isso tivesse adicionado uma coluna adicional em (PK ) a estrutura do índice será a mesma que criar um índice não exclusivo apenas em Col1, Col2 em um #temp tabela.
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)

para um índice não clusterizado não exclusivo, o SQL Server sempre adiciona a chave CI à chave NCI implicitamente de qualquer maneira. Isso apenas mostra isso explicitamente.

Veja Kalen Delaney Mais sobre Chaves de índice não clusterizadas