1

データベースからデータを取得するのに約7〜8秒かかる単純なクエリがあり、さらに2〜3秒に微調整したいと思います。

テーブル :

UpdateDateTime | field1 | field2 |..... FieldN.

クエリは:

Select *  
from Table with (nolock)  
where UpdateDateTime Between D1 and D2  
Order By UpdateDateTIme  

ClusteredIndexOnを作成しましたUpdateDateTime

その効率を上げるためにさらに何ができるでしょうか?

4

1 に答える 1

3

返される列の数を減らすことは明らかな答えです。次に、他の選択された列にカバーする(クラスター化されUpdateDateTIme ていない)インデックスを作成します。INCLUDE

CREATE NONCLUSTERED INDEX NC_MyCoveringIndex 
   ON Table(UpdateDateTime)
      INCLUDE (Col1, Col2, ..., ColN)

Ref

[:テーブル内のすべての列を含むワイドカバーインデックスを作成することは理想的ではありません。]

WHERE多くはあなたの条項がどれほど選択的であるかに依存します。テーブル内の行数の(約)10%を超える値が返される場合、オプティマイザーはおそらくクラスター化インデックスをスキャンするだけです。

それはほとんどそれです。さらに、ハードウェアと、ネットワークを介してプルしているデータの量を確認する必要があります。

于 2012-12-24T08:52:12.320 に答える