SQL Server-何时使用群集索引与非群集索引



我知道聚集索引和非聚集索引之间的主要区别,并了解它们的实际工作方式。我了解聚集索引和非聚集索引如何提高读取性能。但有一件事我不确定,那就是我会选择其中一个而不是另一个的原因是什么。

例如:如果一个表没有聚集索引,应该创建一个非聚集索引吗?进行有什么好处

我只想提一句警告:请非常小心地选择您的聚集索引!每个"常规"数据表都应该有一个聚集索引,因为有了聚集索引确实会加快很多操作——是的,会加快,甚至插入和删除!但前提是您选择了良好聚集索引。

它是SQL Server数据库中复制次数最多的数据结构。集群键也将是表上每个非集群索引的一部分。

在选择集群密钥时应该格外小心——它应该是:

  • (理想4字节)

  • unique(它毕竟是"行指针"。如果你不使它唯一,SQL Server将在后台为你做这件事,每个条目花费几个字节乘以你拥有的行数和非聚集索引数-这可能非常昂贵!)

  • 静态(如果可能,永远不要改变)

  • 理想情况下不断增加,这样您就不会出现可怕的索引碎片(GUID与好的集群密钥完全相反——出于这个特殊原因)

  • 它应该是不可为零的,并且理想情况下也是固定宽度的——varchar(250)会产生非常差的集群密钥

任何其他事情都应该是这些点之后的第二和第三级重要性。。。。

查看Kimberly Tripp(The Queen of Indexing)关于该主题的一些博客文章-她在博客中写的任何东西都是绝对宝贵的-阅读它,消化它-活下去!

  • GUID作为主键和/或群集键
  • 聚集指数争论仍在继续
  • 不断增加的聚类关键-聚类指数之争。。。。。。。。。。再次
  • 磁盘空间很便宜-这不是重点所在

相关内容

  • 没有找到相关文章

最新更新