主键为什么默认是 CLUSTERED

作者:vkvi 来源:ITPOW(原创) 日期:2008-9-18

SQL Server 建立主键后,默认是 CLUSTERED 的(除非已经有了其它键或索引为 CLUSTERED),SQL Server 为什么要这样设置默认值呢?这是为了性能的考虑。

主键的目的之一就是根据主键快速地查找到记录,我们建立一个很简单的表,并建立一个主键,进行两次简单的根据主键的查找测试,两次测试分别设置主键为非 CLUSTERED 与 CLUSTERED。

非 CLUSTERED 主键与 CLUSTERED 主键的执行计划对比

从执行计划看出,非 CLUSTERED 的查找要多一次书签查找。再看看客户统计情况:

非 CLUSTERED 主键与 CLUSTERED 主键的客户统计对比.png

数据库中仅有不足 20 条记录,已经可以看出非 CLUSTERED 与 CLUSTERED 的差异了。

由此,我们应该可以理解,为什么主键不是必须要 CLUSTERED,但 SQL Server 默认给我们设置成 CLUSTERED 的原因了。

相关文章