このアクセスアルゴリズムが使用できるのは、WHERE
節が異なるキーの複数のレンジ条件に変換、AND
で結合され、各コンディションは以下の1つ:
このフォームでは、インデックスパーツはN
個あります(つまり、全てのインデックスパーツがカバーされています。)
key_part1
=const1
ANDkey_part2
=const2
... ANDkey_partN
=constN
InnoDB
テーブルのプライマリキーをカバーするレンジ条件。
例:
SELECT * FROMinnodb_table
WHEREprimary_key
< 10 ANDkey_col1
=20; SELECT * FROMtbl_name
WHERE (key1_part1
=1 ANDkey1_part2
=2) ANDkey2
=2;
インデックス共通集合アルゴリズムは全ての使用されたインデックスの同時スキャンを実行し、結合インデックススキャンから受信した行シーケンスの共通集合を生成します。
クエリで使用される全てのカラムが使用済みインデックスでカバーされている場合、完全なテーブル行は取得されません。(EXPLAIN
出力はExtra
フィールド内のUsing
index
を含んでいます)。そのようなクエリの例です:
SELECT COUNT(*) FROM t1 WHERE key1=1 AND key2=1;
クエリ内で使用されたカラムを使用されたインデックスがカバーしない場合、完全な行が取得されるのは全てのキーのレンジ条件が満たされたときのみです。
結合条件のうち1つがInnoDB
テーブルのプライマリキー上の条件である場合、行取得には使用されず、他の条件を使用して取得した行にフィルターをかけるのに使用されます。