Indexing 具有多个字段或多个索引的索引

Indexing 具有多个字段或多个索引的索引,indexing,sql-server-2012,Indexing,Sql Server 2012,我做了一些环顾四周的工作,试图了解索引。能够从Brent Ozar的网站上学到很多东西,但有一个后续问题 在Brent关于Sargability的视频中,他提到如果列在where子句中,那么它必须是索引中的第一列。我的问题是,如果where子句在同一个表中有多个列,那么这应该是一个索引,其中列按where子句的顺序列出,还是每列都有自己的索引 这些表格每天更新1次,包含约1000万条记录 我使用的是SQL Server 2012。根据您的查询,这两种不同的索引将大不相同 如果WHERE子句中有两

我做了一些环顾四周的工作,试图了解索引。能够从Brent Ozar的网站上学到很多东西,但有一个后续问题

在Brent关于Sargability的视频中,他提到如果列在where子句中,那么它必须是索引中的第一列。我的问题是,如果where子句在同一个表中有多个列,那么这应该是一个索引,其中列按where子句的顺序列出,还是每列都有自己的索引

这些表格每天更新1次,包含约1000万条记录


我使用的是SQL Server 2012。

根据您的查询,这两种不同的索引将大不相同

如果WHERE子句中有两个字段

如果您有一个复合索引(一个索引中有两个字段),SQL Server 将使用下面的计划,它是非常快的

如果每个字段上有2个单独的索引,SQL Server将使用 不同的计划(比上面慢得多)

如您所见,它在不同的线程中查找每个数据集,然后合并它们


不过,根据您的数据,您可能会得到不同的计划,但这是SQL Server的一般行为。

非常感谢您的帮助