Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server-何时使用聚集索引与非聚集索引?_Sql Server_Indexing_Clustered Index_Non Clustered Index_Query Tuning - Fatal编程技术网

Sql server SQL Server-何时使用聚集索引与非聚集索引?

Sql server SQL Server-何时使用聚集索引与非聚集索引?,sql-server,indexing,clustered-index,non-clustered-index,query-tuning,Sql Server,Indexing,Clustered Index,Non Clustered Index,Query Tuning,我知道聚集索引和非聚集索引之间的主要区别,并了解它们的实际工作方式。我了解聚集索引和非聚集索引如何提高读取性能。但有一件事我不确定,我会选择其中一个而不是另一个的原因是什么 例如:如果一个表没有聚集索引,那么应该创建一个非聚集索引吗?这样做的好处是什么?我只想提出一个警告:请非常小心地选择你的聚集索引!每一个“常规”数据表都应该有一个聚集索引,因为拥有聚集索引确实会加快很多操作—是的,加速,甚至插入和删除!但前提是您选择了一个好的聚集索引 它是SQL Server数据库中复制次数最多的数据结构。

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


例如:如果一个表没有聚集索引,那么应该创建一个非聚集索引吗?这样做的好处是什么?我只想提出一个警告:请非常小心地选择你的聚集索引!每一个“常规”数据表都应该有一个聚集索引,因为拥有聚集索引确实会加快很多操作—是的,加速,甚至插入和删除!但前提是您选择了一个好的聚集索引

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

在选择群集键时应格外小心-它应该是:

  • (理想情况下为4字节)

  • unique(它毕竟是“行指针”。如果您不使其唯一,SQL Server将在后台为您执行此操作,每个条目将花费您两个字节乘以您拥有的行数和非聚集索引数-这可能非常昂贵!)

  • 静态(如果可能,永不更改)

  • 理想情况下,不断增加,这样就不会出现可怕的索引碎片(GUID与良好的集群键完全相反-出于特定原因)

  • 它应该是不可空的,理想情况下也是固定宽度的-一个
    varchar(250)
    会产生非常糟糕的集群键

在这些观点背后,其他任何东西都应该是第二和第三层次的重要性

查看金伯利·特里普(索引女王)关于这个主题的一些博客帖子——她在博客中写的任何东西都是绝对无价的——阅读它,消化它——按照它生活


感谢您的回复。我已经意识到这一点。我的问题是,是否存在创建非聚集索引比创建聚集索引更有益的情况,您应该在以下情况下避免使用聚集索引:;该列的基数较低,没有特定的顺序,经常更新,不连续,它是许多列的组合…感谢您的回答。它的帮助也许这个问题会帮助你:感谢marc_的清晰解释。但从技术上讲,
非聚集的
索引为我们做了什么。它的重要性是什么@nad:一个精心选择的非聚集索引可以加快您的搜索速度——您不必将数百万行数据与您的搜索条件进行比较,只需4、5次比较就可以找到给定的行。这是一个巨大的不同@MuriloKunze:阅读-她非常详细地解释了为什么会出现这种情况对不起,但是“SQL Server-何时使用聚集索引与非聚集索引?”这个问题的答案在哪里?