0

日付フィールド述語 (クラスター化されていない) を使用してデータを取得していますが、目標を達成するために 2 つの代替手段を使用しようとしています。フィールドは adatetimeであり、私が使用しているステートメントの 1 つで、フィールドに格納されている値を文字通り使用しています。

WHERE dataload ='2012-07-16 10:13:01.307'

他のステートメントでは、この述語を使用しています。

WHERE dataload >= DATEADD(DAY,0,datediff(day,0,@Dataload)) 
  and dataload <= dateadd(ms,-3,DATEADD(DAY,1,datediff(day,0,@Dataload)))

統計の IO/時間出力を見ると、読み取りは同じですが、メソッド #1 は 16 ミリ秒の CPU を使用し、メソッド #2 は 0 ミリ秒を使用したため、メソッド #1 は総コストの 39% を超えて 61% を消費しました。方法#2。

メソッド #2 に非常に多くの機能があり、0ms が得られるのに、#method1 で CPU が使用されている理由がよくわかりません。

それについての基本的な説明はありますか?

4

1 に答える 1

0

最初のメソッドは、ディスクからフィールドを取得し、'6 ミリ秒かかります。2 番目の方法は、メモリからデータをフェッチするだけです。順序を逆にすると、他の方法の方が時間がかかります。

于 2012-09-19T11:10:59.853 に答える