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)
非聚集的
索引为我们做了什么。它的重要性是什么@nad:一个精心选择的非聚集索引可以加快您的搜索速度——您不必将数百万行数据与您的搜索条件进行比较,只需4、5次比较就可以找到给定的行。这是一个巨大的不同@MuriloKunze:阅读-她非常详细地解释了为什么会出现这种情况对不起,但是“SQL Server-何时使用聚集索引与非聚集索引?”这个问题的答案在哪里?