아니라 모든 해답은 매우 도움이되었다,하지만 여전히 나는 테이블은 하나의 클러스터 된 인덱스와를 포함 할 수 있습니다
- 아니라 일부 다른 사람을 위해 도움이 될 수 있도록 몇 가지 상세한 답을 추가하고 싶습니다 기본 키 은 클러스터 된/클러스터되지 않은 인덱스가 될 수 있습니다.
- 고유 키가 클러스터/클러스터되지 않은 인덱스 할 수 있습니다뿐만 아니라, 아래
시나리오 1은 예제의 일부입니다 : 기본 키가이 경우 클러스터 된 인덱스
로 설정됩니다 우리 Primary Key 만 생성하고 테이블에 생성 된 인덱스의 종류를 확인하면 자동으로 클러스터 된 인덱스가 생성되었음을 알 수 있습니다.
USE TempDB
GO
-- Create table
CREATE TABLE TestTable
(ID INT NOT NULL PRIMARY KEY,
Col1 INT NOT NULL)
GO
-- Check Indexes
SELECT OBJECT_NAME(OBJECT_ID) TableObject,
[name] IndexName,
[Type_Desc] FROM sys.indexes
WHERE OBJECT_NAME(OBJECT_ID) = 'TestTable'
GO
-- Clean up
DROP TABLE TestTable
GO
시나리오 2 : 우리는 명시 적으로 클러스터되지 않은 인덱스로 기본 키를 정의하고이 비로 만들 것이다 기본 키가이 경우 클러스터되지 않은 인덱스
으로 정의된다 클러스터 된 인덱스 기본 키는 클러스터되지 않은 인덱스가 될 수 있음을 증명합니다.
USE TempDB
GO
-- Create table
CREATE TABLE TestTable
(ID INT NOT NULL PRIMARY KEY NONCLUSTERED,
Col1 INT NOT NULL)
GO
-- Check Indexes
SELECT OBJECT_NAME(OBJECT_ID) TableObject,
[name] IndexName,
[Type_Desc] FROM sys.indexes
WHERE OBJECT_NAME(OBJECT_ID) = 'TestTable'
GO
-- Clean up
DROP TABLE TestTable
GO
시나리오 3 : 우리가 다른 컬럼에 클러스터 된 인덱스를 생성합니다이 경우 클러스터 된 인덱스
로 정의 된 다른 열이 클러스터되지 않은 인덱스에 기본 키의 기본값은 SQL 서버가 자동으로 생성됩니다 클러스터 된 인덱스가 다른 열에 지정되므로 클러스터되지 않은 인덱스로 기본 키.
-- Case 3 Primary Key Defaults to Non-clustered Index
USE TempDB
GO
-- Create table
CREATE TABLE TestTable
(ID INT NOT NULL PRIMARY KEY,
Col1 INT NOT NULL UNIQUE CLUSTERED)
GO
-- Check Indexes
SELECT OBJECT_NAME(OBJECT_ID) TableObject,
[name] IndexName,
[Type_Desc] FROM sys.indexes
WHERE OBJECT_NAME(OBJECT_ID) = 'TestTable'
GO
-- Clean up
DROP TABLE TestTable
GO
시나리오 4 : 우리는 모두 테이블에 두 개의 인덱스를 생성하지만 우리는 지정하지 않습니다이 경우 비 클러스터형 인덱스
다른 인덱스 기본값으로 클러스터 된 인덱스에 기본 키 기본값 열의 인덱스 유형. 결과를 확인할 때 기본 키는 자동으로 Clustered Index에 기본값으로 설정되고 다른 열은 Non-clustered 인덱스로 자동 설정됩니다.
-- Case 4 Primary Key and Defaults
USE TempDB
GO
-- Create table
CREATE TABLE TestTable
(ID INT NOT NULL PRIMARY KEY,
Col1 INT NOT NULL UNIQUE)
GO
-- Check Indexes
SELECT OBJECT_NAME(OBJECT_ID) TableObject,
[name] IndexName,
[Type_Desc] FROM sys.indexes
WHERE OBJECT_NAME(OBJECT_ID) = 'TestTable'
GO
-- Clean up
DROP TABLE TestTable
GO
참조 : 명시 적으로`index` 생성의 "클러스터"옵션을 사용하여 정의하지 않는 한 the above details is been refrenced from this article
앞에'unique' 키, 클러스터되지 않습니다. –
http://stackoverflow.com/questions/1251636/what-do-clustered-and-non-clustered-index-actually-mean 및 https://msdn.microsoft.com/en-CA에서 조금 더 잘 설명되어 있습니다. /library/ms190457.aspx. – yelxe