NOT INやNOT EXISTSなどの負の演算子を使用しないことや、論理を正の演算子に逆にする方法 (たとえば、NOT INの代わりにINを使用する)が非常に優れたパフォーマンスにつながる可能性があることをよく読みました。
とにかく、私は多くの CASE WHEN 演算子といくつかの条件をチェックしているビューを持っています。IS NOT NULLとIS NULLを使用した場合のパフォーマンスの違いはあるのでしょうか?
NOT INやNOT EXISTSなどの負の演算子を使用しないことや、論理を正の演算子に逆にする方法 (たとえば、NOT INの代わりにINを使用する)が非常に優れたパフォーマンスにつながる可能性があることをよく読みました。
とにかく、私は多くの CASE WHEN 演算子といくつかの条件をチェックしているビューを持っています。IS NOT NULLとIS NULLを使用した場合のパフォーマンスの違いはあるのでしょうか?
どちらもインデックス シークとして実行できます。
そのうちの 1 つはインデックスの先頭を探してすべての行を読み取り、最初の行NULL
に遭遇すると停止しNOT NULL
、もう 1 つは最初のNOT NULL
値を探してから残りのインデックス全体を読み取ります。
ただし、インデックスがカバーしていない限り、シークは選択性に帰着するため、どちらの場合も使用できません。多くのNULL
値がNOT NULL
あり、非常に選択的である場合は、ここの例に従って、その列にフィルター選択されたインデックスを作成することを検討してください。