サイズ・アンド・サイズアカウントとは、オプティマイザーが生成した実行計画が特定のデータセットに対して最適であるため、計画キャッシュに格納されることを指します。しかし、その後のデータセットに対しては最適ではなくなり、結果としてSQLリクエストの処理時間が増加し、スループットが低下します。
以下のシナリオを考えてみましょう:
あるテーブルにユーザー次元の注文情報が格納されており、各行にはユーザーIDと注文IDの2つのフィールドがあります。ユーザーIDと注文IDに対してそれぞれインデックスが作成されています。
この問題は、以下の方法で解決できます:
プランキャッシュのリフレッシュ:この操作は計画キャッシュ内の計画をクリアし、ハードパースをトリガーして新しい実行計画を生成しますが、それでも非最適な実行計画が生成される可能性があります。
実行計画のバインド:
CREATE OUTLINEステートメントを使用して、対象SQLに計画をバインドします。
詳細については、SQL FAQ の SQLクエリの「サイズ・アンド・サイズアカウント」問題の解決方法 セクションおよび SQLチューニングの典型的なシナリオと事例 の サイズ・アンド・サイズアカウント セクションを参照してください。