繁体   English   中英

SQL Server 2008 Index Multiple Columns 有些没一直用

[英]SQL Server 2008 Index Multiple Columns Some not used all the time

我有一个带列的表

ParameterValueId, SiteId, LocationId, ParameterId, SampleDateTime

和其他一些列。

ParameterValueId是主键。

我想创建一个不是唯一的索引来加速对SiteId, LocationId, ParameterId, SampleDateTime

  • 我所有的查询都将使用SiteId
  • 我 75% 的查询将使用SiteIdLocationId
  • 我 50% 的查询将使用SiteIdLocationIdParameterId
  • 我的查询的25%将使用SiteIdLocationIdParamterId和滤波器>=/<= SampleDateTime

我可以只在SiteId, LocationId, ParameterId, SampleDateTime上创建一个索引吗?

还是我需要创建 4 个索引?

我想我的问题是,如果我在 4 列上创建索引,如果我只使用其中的 1、2 或 3 列而不是全部 4 列,它是否会被使用并仍然提高性能?

作为一般经验法则,鉴于您所描述的场景,所有四列上的一个索引可能是一个很好的起点。 但是,根据数据的性质和形状,您可能还需要做其他事情来提高性能(例如,SiteID 的差异有多大?它是否唯一?单个值是否占 20% 以上的值?那个列?)。

简短回答:将使用一个覆盖索引,即使查询中并未使用所有覆盖的列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM