SQL
パターン2: RECOMPILEが効く(パラメータ依存性高)
出典: SQL Server で OPTION(RECOMPILE) を脳死で付けて遅くなった話 — 3パターンのコード比較(動作確認つき) / パターン2: RECOMPILEが効く(パラメータ依存性高)
SELECT OrderId, CustomerId, OrderDate
FROM Orders
WHERE Status = @status
OPTION (RECOMPILE);
▸ 実行ボタンで結果を表示
Source収録記事
この snippet は記事の「3パターンのコード比較(動作確認つき) / パターン2: RECOMPILEが効く(パラメータ依存性高)」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
3 件-- これは罠 SELECT * FROM Sessions WHERE SessionId = @sid OPTION (RECOMPILE); -- ↑ 1秒に100回叩かれる SELECT に付けると、コンパイル時間が積み重なって CPU が爆上がり
▶ 実行可
なぜ「とりあえずRECOMPILE」が逆効果になるのか
#6c4d462b81b8
SELECT OrderId, CustomerId, TotalAmount FROM Orders WHERE OrderId = @orderId;
▶ 実行可
パターン1: RECOMPILE不要(主キー一発引き・プランキャッシュで十分)
#2dfc6b7f28b4
SELECT SessionId, UserId, LastAccess FROM Sessions WHERE SessionId = @sid OPTION (RECOMPILE);
▶ 実行可
パターン3: RECOMPILE逆効果(高頻度+パラメータ依存なし)
#e99b05b9a5e5
