たくさんのものを返すストアドプロシージャを実行したいと思います。そのうちの1つは、結果のコンマ区切りの文字列です。
COALESCEについて読み、次のようにする関数を作成しました。
DECLARE @ListOfStuff NVARCHAR(4000)
SELECT @ListOfStuff = COALESCE(@ListOfStuff + ', ', '') + Z.SingleStuff
FROM X
INNER JOIN Y ON X.SomeId = Y.Id
INNER JOIN Z ON Y.SomeId = Z.id
WHERE --Some condition
RETURN ISNULL(@ListOfStuff, '')
そして、メインのSELECTでこの関数を呼び出すと、期待どおりに機能します。ただし、この手順は実行に非常に長い時間がかかり、タイムアウトになることがよくあります。私が疑問に思っているのは、誰かがそれを最適化する方法を知っているかどうかです。関数を削除し、このロジックをプロシージャに組み込むと、実行速度が大幅に向上すると思いますが、この方法でCOALESCEを使用するサブ選択を行う方法を見つけることができませんでした。
このロジックを最適化する方法はありますか?よろしくお願いします