我有一个包含列的表
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列,那么仍会提高性能吗?
答案 0 :(得分:6)
作为一般的经验法则,根据您所描述的情况,所有四列上的一个索引可能是一个很好的起点。但是,根据数据的性质和形状,您可能还需要做其他事情来提高性能(例如,SiteID的不同之处是什么?它是唯一的吗?单个值是否超过20%的值? colum?)。
简答:即使并非在查询中使用了所有涵盖的列,也会使用一个覆盖索引。