SQL Server是否默认创建非聚集索引

Sha*_*run 7 sql sql-server indexing clustered-index

雅,它是一个重复这个.但我只需要Pinal Dave这篇文章进行澄清,其中说明如下:

方案4:主键默认为聚簇索引,其他索引默认为非聚簇索引

在这种情况下,我们将在两个表上创建两个索引,但是我们不会在列上指定索引的类型.当我们检查结果时,我们会注意到主键自动默认为聚簇索引而另一列默认为非聚集索引.

-- 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
Run Code Online (Sandbox Code Playgroud)

mar*_*c_s 12

唯一自动创建的索引:

  • 主键上的聚簇索引(除非您另行指定 - 如果将主键定义为非聚簇,则将创建索引)

  • 应用于列(或列集)时的唯一非聚簇索引UNIQUE CONSTRAINT