我知道聚集索引和非聚集索引之间的主要区别,并且了解它们的实际工作方式。我了解聚集索引和非聚集索引如何提高读取性能。但我不确定的一件事是,我选择其中一个而不是另一个的原因是什么。
例如:如果一张表没有聚集索引,是否应该创建一个非聚集索引,这样做有什么好处
我知道聚集索引和非聚集索引之间的主要区别,并且了解它们的实际工作方式。我了解聚集索引和非聚集索引如何提高读取性能。但我不确定的一件事是,我选择其中一个而不是另一个的原因是什么。
例如:如果一张表没有聚集索引,是否应该创建一个非聚集索引,这样做有什么好处
我只想说一句警告:请非常小心地选择您的聚集索引!每个“常规”数据表都应该有一个聚集索引,因为有一个聚集索引确实可以加速很多操作——是的,加速,甚至插入和删除!但前提是你选择了一个好的聚集索引。
它是SQL Server 数据库中复制最多的数据结构。聚集键也将成为表上每个非聚集索引的一部分。
选择群集键时应格外小心 - 它应该是:
窄(4 字节理想)
唯一的(毕竟它是“行指针”。如果你不让它成为唯一的,SQL Server 会在后台为你做这件事,每个条目花费你几个字节乘以行数和非聚集索引的数量你有 - 这可能非常昂贵!)
静态的(永远不要改变 - 如果可能的话)
理想情况下不断增加,因此您不会以可怕的索引碎片告终(GUID 与良好的集群键完全相反 - 出于这个特殊原因)
它应该是不可为空的,并且理想情况下也是固定宽度 - avarchar(250)
是一个非常糟糕的聚类键
其他任何事情都应该是这些点之后的第二和第三级重要性....
请参阅 Kimberly Tripp(索引女王)关于该主题的一些博客文章 - 她在博客中所写的任何内容都绝对是无价之宝 - 阅读、消化 - 以它为生!