1

列のあるテーブルがあります

ParameterValueId, SiteId, LocationId, ParameterId, SampleDateTime

および他のいくつかの列。

ParameterValueId主キーです。

でのクエリを高速化するために、一意ではないインデックスを作成したいと考えていますSiteId, LocationId, ParameterId, SampleDateTime

  • 私のクエリはすべて使用しますSiteId
  • 私のクエリの 75% はSiteIdLocationId
  • クエリの 50% でSiteId、、、LocationIdおよびParameterId
  • 私のクエリの 25% は、、、、およびフィルタを使用しSiteIdますLocationIdParamterId>=/<= SampleDateTime

にインデックスを 1 つだけ作成できますSiteId, LocationId, ParameterId, SampleDateTimeか?

または、4 つのインデックスを作成する必要がありますか?

私の質問は、4 つの列にインデックスを作成した場合、それらの列の 1、2、または 3 つだけを使用し、4 つすべてではなく、それが使用されてもパフォーマンスが向上するかということだと思います。

4

1 に答える 1

6

一般的な経験則として、説明したシナリオを考えると、4 つの列すべてに 1 つのインデックスを作成するのがおそらく良い出発点です。ただし、データの性質と形状によっては、パフォーマンスを向上させるために必要なことが他にもある場合があります (たとえば、SiteID はどの程度分散しているか? 一意であるか? 単一の値が 20% 以上の値を占めているか?そのコラム?)。

簡単な回答: 対象となる列のすべてがクエリで使用されていなくても、1 つの対象インデックスが使用されます。

于 2012-11-30T02:45:39.990 に答える