SQL Server 테이블 변수의 인덱스
SQL Server 2014 이상에서는 인라인 구문을 사용하여 테이블 변수에 직접 인덱스를 생성할 수 있습니다. 예:
<code class="language-sql">DECLARE @T TABLE ( C1 INT INDEX IX1 CLUSTERED, C2 INT INDEX IX2 NONCLUSTERED, INDEX IX3 NONCLUSTERED(C1, C2), );</code>
반면 SQL Server 2000~2012에서는 테이블 변수에 인덱스를 명시적으로 생성할 수 없습니다. 그러나 암시적 인덱스는 제약 조건 선언을 통해 생성될 수 있습니다.
SQL Server 2000에서 이름 열에 대한 인덱스 생성
다음 테이블 변수 선언을 고려하세요.
<code class="language-sql">DECLARE @TEMPTABLE TABLE ( [ID] [INT] NOT NULL PRIMARY KEY, [Name] [NVARCHAR] (255) COLLATE DATABASE_DEFAULT NULL, );</code>
이름 열에 인덱스를 생성할 수 있나요?
예. UNIQUE NONCLUSTERED
제약 조건을 사용하여 이름 열에 인덱스를 생성할 수 있습니다. 구문은 다음과 같습니다.
<code class="language-sql">DECLARE @TEMPTABLE TABLE ( [ID] [INT] NOT NULL PRIMARY KEY, [Name] [NVARCHAR] (255) COLLATE DATABASE_DEFAULT NULL, UNIQUE NONCLUSTERED ([Name], [ID]), );</code>
테이블 변수에 대한 인덱스 구현
SQL Server의 기존 테이블은 클러스터형 인덱스 또는 힙일 수 있습니다. 테이블 변수에서 인덱스는 제약 조건을 통해서만 암시적으로 생성됩니다. 이는 테이블 변수에 생성할 수 있는 인덱스 유형이 제한되어 있음을 의미합니다.
다음 표에는 다양한 유형의 인덱스와 SQL Server 2000~2012의 테이블 변수에 인덱스를 생성할 수 있는지 여부가 요약되어 있습니다.
索引类型 | 表变量支持 |
---|---|
唯一聚集索引 | 是 |
非唯一聚集索引 | 否 |
堆上的唯一非聚集索引 | 是 |
堆上的非唯一非聚集索引 | 否 |
聚集索引上的唯一非聚集索引 | 是 |
聚集索引上的非唯一非聚集索引 | 是 |
제공된 예에서는 이름 및 ID에 고유 인덱스를 생성하여 이름 열의 고유하지 않은 비클러스터형 인덱스를 시뮬레이션합니다. 이는 SQL Server가 고유하지 않은 인덱스 키에 클러스터형 인덱스 키를 암시적으로 추가하기 때문입니다.
위 내용은 SQL Server 테이블 변수에 인덱스를 만들 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!