1

我有一个有列的表

ParameterValueId, SiteId, LocationId, ParameterId, SampleDateTime

和其他一些专栏。

ParameterValueId是主键。

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

  • 我所有的查询都将使用SiteId
  • 我 75% 的查询将使用SiteIdLocationId
  • 我 50% 的查询将使用SiteId, LocationId, 和ParameterId
  • 我 25% 的查询将使用SiteId, LocationId, ParamterId, 和一个过滤器>=/<= SampleDateTime

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

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

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

4

1 回答 1

6

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

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

于 2012-11-30T02:45:39.990 回答