代码有什么问题。或其结果,说明聚簇索引是邪恶的 [1]?
以及如何揭穿,即回到习惯的神话和最佳实践?
[1]
揭穿关于聚集索引的神话 - 第 3 部分(示例脚本)
http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/2006/09/16/377.aspx
gbn 编辑,2012 年 1 月
死链接曾经有一个脚本可以“证明”聚簇索引是坏的。
代码有什么问题。或其结果,说明聚簇索引是邪恶的 [1]?
以及如何揭穿,即回到习惯的神话和最佳实践?
[1]
揭穿关于聚集索引的神话 - 第 3 部分(示例脚本)
http://blogs.sqlserver.org.au/blogs/greg_linwood/archive/2006/09/16/377.aspx
gbn 编辑,2012 年 1 月
死链接曾经有一个脚本可以“证明”聚簇索引是坏的。
该脚本有一个相当宽的 varchar 聚集索引。在用随机数据填充它之后,它也需要重建索引:你会有大量的碎片。
一个好的聚簇索引是窄的、数字的并且严格单调递增:这就是人们使用代理键的原因......
没有聚集索引的表被称为“堆”,因为它就是:一堆数据躺在磁盘上。无论您重建多少 NC 索引,它都会保持这种状态。除了临时表(具有加载/截断使用模式)之类的东西之外,没有理由不拥有集群主键。
编辑:该链接并没有揭穿聚集索引的神话,而是展示了如何创建不合适的聚集索引以及为什么索引维护很重要。第 1 部分和第 2 部分提到了书签查找(现在是 SQL Server 2005+ 中的键查找):一个好的 NC 索引将被覆盖,因此它们不会发生。
要了解索引,我建议阅读 Simple Talk 的许多文章。像这个
聚簇索引并不邪恶。然而,并不是每个表都能从聚簇索引中获益,而且它们经常被粗心地以有害的方式滥用。因此,Gregg(和其他人)的文章的重点是展示一些陷阱。