前提・実現したいこと
あるクエリの性能改善を行ったさい、
実行計画ではIndex Scan → Index Scan + Key lookup程度には推定コストと推定行数が下がっているのに、
画面操作によりクエリをプロファイラで確認するとTable Scanかというくらい両者とも上がることがありました。
実行計画では早くなるのに、実際の画面操作だと遅くなる原因を知りたいです。
質問のタイトルには「CASE式~」とありますが、CASE式が直接の原因かは不明です。
また、私はこういう場合にCASE式を使うと早くなると考えているのですが、間違っていたら教えてください。。
該当のソースコードが曖昧なため、
「もしかして」レベルでも良いので心当たりあれば教えてくださると幸いです。
該当のソースコード
sql
1SELECT 2 ... 3 FROM 4 FUGA 5 WHERE 6 (@hoge0 == '' 7 OR @hoge1 is Null 8 OR FUGA.name = @hoge2) 9 AND 10 (@foo0== '' 11 OR @foo1 is Null 12 OR FUGA.age = @foo2) 13 AND 14 ...
↓
sql
1SELECT 2 ... 3 FROM 4 FUGA 5 WHERE 6 1 = 7 CASE 8 WHEN FUGA.name = @hoge2 9 THEN 1 10 WHEN @hoge0 == '' 11 THEN 1 12 WHEN @hoge1 is Null 13 THEN 1 14 ELSE 15 0 16 END 17 AND 18 1 = 19 CASE 20 WHEN FUGA.name = @foo2 21 THEN 1 22 WHEN @foo0== '' 23 THEN 1 24 WHEN @foo1 is Null 25 THEN 1 26 ELSE 27 0 28 END 29 AND 30 ...
補足情報(FW/ツールのバージョンなど)
- SQL Server
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。