データベース応用問題
あるSELECT文でWHERE句に「列A = 5 OR 列B = 10」という条件を指定した。列Aと列Bにはそれぞれ個別のインデックスが存在する。このクエリの実行計画に関する説明として、最も適切なものはどれか。
A.OR条件では必ず両方のインデックスが同時に使用され、結果がマージされる
✗ OR条件で両インデックスのマージ(Index Merge)が行われることもありますが、常に実施されるわけではありません。
B.OR条件では一般的にインデックスが使用されにくく、テーブルフルスキャンが選択されることがある← 正解
✓ 正解です。OR条件はAND条件と比べてインデックスが効きにくく、フルスキャンの方がコスト低と判断されることがあります。
C.OR条件の場合、DBMSは自動的にAND条件に書き換えてインデックスを最大活用する
✗ DBMSがOR条件をAND条件に自動変換することはありません。論理的に異なる結果になるため変換できません。
D.OR条件では最初に記述された列Aのインデックスのみが使用され、列Bは無視される
✗ 特定の実装によっては一方のみ使用される場合もありますが、「常に列Aのみ」という仕様は存在しません。