![](/img/trans.png)
[英]Determine all columns used to execute some SQL on SQL Server 2008
[英]SQL Server 2008 Index Multiple Columns Some not used all the time
我有一个带列的表
ParameterValueId, SiteId, LocationId, ParameterId, SampleDateTime
和其他一些列。
ParameterValueId
是主键。
我想创建一个不是唯一的索引来加速对SiteId, LocationId, ParameterId, SampleDateTime
。
SiteId
SiteId
和LocationId
SiteId
、 LocationId
和ParameterId
SiteId
, LocationId
, ParamterId
和滤波器>=/<= SampleDateTime
我可以只在SiteId, LocationId, ParameterId, SampleDateTime
上创建一个索引吗?
还是我需要创建 4 个索引?
我想我的问题是,如果我在 4 列上创建索引,如果我只使用其中的 1、2 或 3 列而不是全部 4 列,它是否会被使用并仍然提高性能?
作为一般经验法则,鉴于您所描述的场景,所有四列上的一个索引可能是一个很好的起点。 但是,根据数据的性质和形状,您可能还需要做其他事情来提高性能(例如,SiteID 的差异有多大?它是否唯一?单个值是否占 20% 以上的值?那个列?)。
简短回答:将使用一个覆盖索引,即使查询中并未使用所有覆盖的列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.