sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo establecer e indexar en dos columnas de la variable de tabla declarada T-SQL?

Tu puedes cree un índice no agrupado de la siguiente manera.

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

Si la intención es que Col1, Col2 son únicos en sí mismos, luego elimine PK de la lista de columnas.

Aunque aparece en su valor nominal como si esto hubiera agregado una columna adicional en (PK ) la estructura del índice será la misma que crear un índice no único solo en Col1, Col2 en un #temp mesa.

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 un índice no agrupado no único, SQL Server siempre agrega la clave CI a la clave NCI implícitamente de todos modos. Esto solo lo muestra explícitamente.

Consulte Kalen Delaney Más información Claves de índice no agrupadas