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