标签: indexing sql-server-2012
我已经做了一些环顾四周试图了解索引。能够从Brent Ozar的网站上学到很多东西,但有一个跟进问题。
在布伦特关于sargabliity的视频中,他提到如果列在where子句中,那么它需要是索引中的第一列。我的问题是,如果where子句有多个来自同一个表的列应该是一个索引,其中列是按where子句的顺序列出的,还是每列都有它自己的索引?
这些表每天更新1次,包含大约1000万条记录。
我正在使用SQL Server 2012。
答案 0 :(得分:1)
根据您的查询,这两种不同的索引会有很大不同。
如果WHERE子句中有两个字段,
如果您有一个复合索引(一个索引中有2个字段),则为SQL Server 将使用以下计划,它非常快。
如果每个字段上有2个单独的索引,则SQL Server使用a 不同的计划(比上面慢很多)
如您所见,它会在不同的线程中找到每个数据集,然后合并它们。
您可能会根据您的数据获得不同的计划,但这是SQL Server的一般行为。