Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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_Sql Server 2005 - Fatal编程技术网

Sql server SQL Server将在此处索引帮助

Sql server SQL Server将在此处索引帮助,sql-server,sql-server-2005,Sql Server,Sql Server 2005,我有一个包含a、B、C、D和E列的表。a(主键,唯一标识符)上当前有一个聚集索引 我经常对A、B和C列进行选择(即A=?和B=?和C=?)。我也经常在A上进行选择,在A、B和D上进行其他选择 除了列A之外,聚集索引在选择该查询方面有什么优势 对于行数相当多且UUID作为主键的表,一般的经验法则是,我应该在所有常用的select列组合上使用非聚集索引,在PK列上使用聚集索引吗 注意:我使用SQL Server 2005。因为在a上已经有聚集索引,所以在其他列B和C上只能有非聚集索引。在where子

我有一个包含a、B、C、D和E列的表。a(主键,唯一标识符)上当前有一个聚集索引

我经常对A、B和C列进行选择(即A=?和B=?和C=?)。我也经常在A上进行选择,在A、B和D上进行其他选择

除了列A之外,聚集索引在选择该查询方面有什么优势

对于行数相当多且UUID作为主键的表,一般的经验法则是,我应该在所有常用的select列组合上使用非聚集索引,在PK列上使用聚集索引吗


注意:我使用SQL Server 2005。

因为在a上已经有聚集索引,所以在其他列B和C上只能有非聚集索引。在where子句中使用的列。这肯定有助于缩短查询执行时间


请记住,每个表只能有一个聚集索引,默认情况下,主键列将被聚集索引。

A是唯一标识符,主键带有聚集索引。这是最快的。聚集索引对于也有B和C或B和D的查询没有帮助,但原因是额外的列对于查询是多余的;你只是不需要它们。一个单独的查询就足以确定您的结果集,而一个查询是您可以运行的最快的查询。包含其他列的索引只有在不涉及A的查询时才对您有帮助。

在A上有非聚集索引,在B上有非聚集索引,还是只有在联合BC上有非聚集索引才有帮助?@Joda Maki-您应该将聚集索引保留在A上。在B上有非聚集索引,C和D。在WHERE子句中经常使用的列。@Joda Maki-在聚集索引键上放置非聚集索引将被SQL Server忽略。聚集键包含在所有非聚集索引中。对不起,我的意思是上面的B和C,而不是A和B。我在AB上有聚集索引。查询“where B=?”是否受益于组合列索引?@Joda Maki:否。如果您在
(A,B)
上有索引,使用
A=xx
A=xx和B=yy
的查询将受益-但不使用
B=yy
@marc_s:为什么使用A=xx而不使用B=yy的查询会受益?@Joda Maki:因为索引中列的顺序;如果您有(A,B),那么只使用(A)或同时使用(A,B)的查询将受益-但只是(B)不能-索引在(A,B)上,因此它对(B)没有任何帮助(每个索引项实际上是(A,B)的组合-如果您正在寻找特定的A^s或A+B,这会有帮助-但它对B没有帮助)@乔达·马基:我不知道你来自哪里,但想象一下一本电话簿;它通常按
(LastName,FirstName)
排序。有了这个,你可以很快找到
Coehoorn
,然后在这些条目中找到
John
。但是当你搜索所有的
David
时,典型的电话簿确实帮不了你,因为索引在
(LastName,FirstName)
…@Joda Maki上-有所谓的向上投票功能。在你问过的43个问题中,没有一个是你试过的。这方面没有明确的规定。是的,这些索引可能有帮助,也可能没有,这取决于您的查询和底层数据的真实外观。您需要1)测量当前的性能,然后2)进行更改(例如引入一个明显的索引),然后3)再次测量,看看是否有改进。阅读GUID为什么会产生非常糟糕的群集键(默认情况下,表上的主键是集群键-除非您已经知道这一点,并且专门更改了默认行为)@Sachin:您必须注册到upvote@Sachin:是的,但是如果我想注册的话,它也会要求我注册。SO最有用的一点是,你可以不用注册就可以使用它。