SQL Server 테이블 변수 인덱싱: SQL Server 2000과 최신 버전
SQL Server 2014 이상
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 2016에서는 테이블 변수에 대해 필터링된 인덱스 사용을 추가로 허용합니다.
<code class="language-sql">DECLARE @T TABLE ( c1 INT NULL INDEX ix UNIQUE WHERE c1 IS NOT NULL )</code>
SQL 서버 2000-2012
SQL Server 2000-2012에서는 테이블 변수는 제약 조건을 통해서만 인덱싱할 수 있습니다.
<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 2000-2012에서는 제약 조건을 통해 다음 유형의 테이블 변수 인덱스를 암시적으로 생성할 수 있습니다.
索引类型 | 能否创建 |
---|---|
唯一聚集索引 | 是 |
非聚集堆上的唯一索引 | 是 |
聚集索引上的唯一非聚集索引 | 是 |
예를 들어 원래 예의 이름 열에 있는 고유하지 않은 비클러스터형 인덱스는 이름 및 ID에 대한 고유 인덱스로 시뮬레이션될 수 있습니다.
<code class="language-sql">DECLARE @TEMPTABLE TABLE ( [ID] [int] NOT NULL PRIMARY KEY ,[Name] [nvarchar] (255) COLLATE DATABASE_DEFAULT NULL )</code>
위 내용은 여러 버전에 걸쳐 SQL Server의 테이블 변수에 대한 인덱싱 기능이 어떻게 변경되었습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!