このクエリを最適化するのに役立つ人はいますか?私はケースステートメントのうち2つしか書いていませんでしたが、実際には、この例(下の2つ)に示すように、そのようなケースはすべて30個のネストされています。TSQL複数のネストされたケースクエリの最適化
SELECT *
FROM QS
INNER JOIN R ON (CASE
WHEN R.FieldCode = 'L'
THEN ---
CASE
when (
(R.Match = 1 AND QS.lineid
IN (SELECT CONVERT(int,s) FROM SplitFunc(',', R.FieldValue)))
OR (R.Match = 0 AND QS.lineid NOT IN (SELECT CONVERT(int,s) FROM SplitFunc(',', R.FieldValue)))) then 1
ELSE 0
END
----
WHEN R.FieldCode = 'D'
THEN
CASE
when ((R.Match = 1 AND QS.productid
IN (SELECT CONVERT(int,s) FROM SplitFunc(',', R.FieldValue)))
OR (R.Match = 0 AND QS.productid NOT IN (SELECT CONVERT(int,s) FROM SplitFunc(',', R.FieldValue)))) then 1
ELSE 0
END
END)=1
最適化が必要なクエリ(パフォーマンスが低下する、または面倒で極端に長い)とは何か「間違っていますか?おそらく、FieldCode、Match、ProductId、FieldValueなどを取るスカラー関数を書くのが最善です。すべてのロジックを論理的に狂ったクエリにまとめることができます(そして再利用することができます) –
これはそのままのスローです – DinaDee