当前位置:  开发笔记 > 编程语言 > 正文

主键是否始终聚集?

如何解决《主键是否始终聚集?》经验,为你挑选了2个好方法。

请清除我对此的疑问,在SQL Server(2000及以上版本)中主键自动聚类索引还是我们可以选择在主键上使用非聚集索引?



1> Mehrdad Afsh..:

不,它可以是非聚集的.但是,如果您没有将其显式定义为非聚集且表上没有聚簇索引,则它将被创建为聚簇.



2> Chris Wueste..:

有人可能还会补充说,经常让主键成为群集是很糟糕的.特别是,当主键由IDENTITY分配时,它没有内在含义,因此任何保持表格相应排列的努力都将被浪费.

考虑一个表Product,其中包含ProductID INT IDENTITY PRIMARY KEY.如果这是集群的,则以某种方式相关的产品可能会遍布整个磁盘.最好通过我们可能基于的东西进行聚类,比如ManufacturerID或CategoryID.在任何一种情况下,聚集索引(其他条件相同)会使相应的查询更有效.

另一方面,子表中指向此的外键可能是群集的良好候选者(我的反对意见是实际具有IDENTITY属性的列,而不是其亲属).因此,在上面的示例中,可能是ManufacturerID是Manufacturer表的外键,其中它被设置为IDENTITY.列不应该是群集的,但Product中引用它的列可能会很好地实现.


@CF - 这不是集群的理由.如果您基于该主键进行查询,则其索引将为您提供帮助.并且可能更快,因为与聚集索引中的行的全宽相比,几乎可以肯定需要更少的IO来通过相对窄的索引.
推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有