問題
インデックス(B+ 木索引)が最も効果を発揮する SQL クエリパターンはどれか。
選択肢
- 1WHERE 列 = 定数 または 範囲検索を、テーブル全件のごく一部に対して行う
- 2WHERE 列 LIKE '%abc%' のように前方部分が不定の検索
- 3テーブル全件を返すクエリ
- 4WHERE 列 + 1 = 100 のように列に関数演算を施した検索
正解
1. WHERE 列 = 定数 または 範囲検索を、テーブル全件のごく一部に対して行う
詳しい解説を見る解説を閉じる
解説
B+ 木インデックスは「列に対する等価検索・範囲検索」「結果が全件のごく一部に絞られるケース」で最も効果が大きい。インデックスを辿った後、テーブル本体への少数アクセスで完結するからである。前方一致でない LIKE 検索や列に関数を適用したケースはインデックスが使えず(関数インデックスや式インデックスなら可)、全件返却ではフルスキャンと差がない。逆に対象行が全体の数割を超えるとオプティマイザがフルスキャンを選ぶことも多い。SQL チューニングの基本論点。
一問一答
全400問を繰り返し学習