今回は、Goldの「G3 パフォーマンスチューニング - G3.2 チューニングの実施」からの出題です。
部分インデックスを作成すると、必ず Index Only Scan が選択されるようになる。
部分インデックスは、テーブルの全行を対象に作成される。
部分インデックスは、検索条件がインデックス定義の WHERE 句と論理的に一致または包含関係にある場合にのみ利用される可能性がある。
データの物理的な配置を分割する目的に部分インデックスを利用することができる。
一意制約(UNIQUE)と組み合わせることで、「特定条件を満たす行に対してのみ一意性を保証する」ことができる。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2026年4月22日
A. 誤った記述です。
部分インデックスを作成しても、必ず Index Only Scan が選択されるとは限りません。選択されるインデックスは、可視性マップ(Visibility Map)の状態や、必要なカラムがインデックスに含まれているかといった条件によって決定されます。
B. 誤った記述です。
部分インデックスは条件を満たす行に対してのみ作成されるため、特定のキー値に対する検索を効率化できます。例えば、status = 'active' の列にだけインデックスを作成しておけば、SELECT * FROM test WHERE velocity = 5 AND status = 'active'のクエリを効率的に実行しながらも、テーブル全体にインデックスを作成する場合と比較してインデックスのサイズを抑えることができます。
C. 正しい記述です。
プランナは、クエリの WHERE 句の条件がインデックス定義の条件を満たす場合にのみ、部分インデックスを利用します。条件が一致しない場合は利用できません。
D. 誤った記述です。
データの物理的な配置の分割にはパーティショニング機能を利用します。部分インデックスはインデックスの対象行を限定する仕組みであり、データの物理的な配置を変更することはできません。
E. 正しい記述です。
CREATE UNIQUE INDEX ... WHERE 条件 とすれば、条件を満たす行に対してカラムの一意性を保証できます。例えば「アカウント有効フラグが true の行では、登録 email が一意である」といった制約を実現できます。
従って、正解は C、E です。
例題および解説は、ボランティアをはじめとした協力者によって作成されたものであり、実際の試験問題とは異なります。
※ご質問やご意見、誤記等のご連絡は、こちらまでお願いします。
※実際の試験問題に関するお問い合わせについてはご回答いたしかねます。あからじめご了承ください。
© EDUCO All Rights Reserved.