4

NOT INNOT EXISTSなどの負の演算子を使用しないことや、論理を正の演算子に逆にする方法 (たとえば、NOT INの代わりにINを使用する)が非常に優れたパフォーマンスにつながる可能性があることをよく読みました。

とにかく、私は多くの CASE WHEN 演算子といくつかの条件をチェックしているビューを持っています。IS NOT NULLIS NULLを使用した場合のパフォーマンスの違いはあるのでしょうか?

4

1 に答える 1

4

どちらもインデックス シークとして実行できます。

そのうちの 1 つはインデックスの先頭を探してすべての行を読み取り、最初の行NULLに遭遇すると停止しNOT NULL、もう 1 つは最初のNOT NULL値を探してから残りのインデックス全体を読み取ります。

ただし、インデックスがカバーしていない限り、シークは選択性に帰着するため、どちらの場合も使用できません。多くのNULL値がNOT NULLあり、非常に選択的である場合は、ここの例に従って、その列にフィルター選択されたインデックスを作成することを検討してください。

于 2012-11-12T09:06:54.463 に答える