私は一連の質問をUNION
と一緒にしています。各クエリには同じIDリストと比較するWHERE... IN
句があります。ストアドプロシージャで繰り返し使用されるサブクエリの結果をキャッシュできますか?
SELECT * FROM MyTable
WHERE AuthorUserId IN (SELECT UserId FROM Users WHERE TeamId = @teamId)
UNION
SELECT * FROM MyTable
WHERE PublisherUserId IN (SELECT UserId FROM USERS WHERE TeamId = @teamId)
UNION...
など:それはこのようになります例の目的のために簡略化した形で
。 @teamId
は、intストアドプロシージャパラメータです。
ので、それは各SELECT
のためにそれを取得しない
SELECT UserId FROM USERS WHERE TeamId = @teamId
の結果セットを保持するために、SQL Serverを伝える方法はありますか?
あなたは一時テーブルに挿入し、そのに対してクエリ...またはあなたがサブクエリの結果は、一般的なクエリキャッシュに入っていることを願ってい可能性ができました。 –