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

Hvordan indstilles og indekseres to kolonner af T-SQL-erklæret tabelvariabel?

Du kan opret et ikke-klynget indeks som følger.

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

Hvis hensigten er, at Col1, Col2 selv er unikke, fjern derefter PK fra kolonnelisten.

Selvom det ser ud til pålydende, som om dette har tilføjet en ekstra kolonne i (PK ) indeksstrukturen vil være den samme som at oprette et ikke-entydigt indeks på kun Col1, Col2 på en #temp tabel.

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)

for et ikke-entydigt ikke-klynget indeks tilføjer SQL Server altid CI-nøglen til NCI-nøglen implicit alligevel. Dette viser det blot eksplicit.

Se Kalen Delaney Mere om Ikke-klyngede indeksnøgler



  1. KONTROLLER BEGRÆNSNING af streng for kun at indeholde cifre. (Oracle SQL)

  2. Afrunding af decimal i sql-server

  3. Hvordan opdeler jeg output fra mysqldump i mindre filer?

  4. Lange strenge i N-Hibernate med Oracle forårsager fejl