Cet algorithme peut être employé lorsque la clause
WHERE
a été convertie en plusieurs
conditions d'intervelle sur différentes clés compbinées
avec AND
, et que chaque condition
vérifie :
Sous cette forme, où l'index a exactement
N
parties (c'est à dire que
toutes les parties de l'index sont couvertes) :
key_part1
=const1
ANDkey_part2
=const2
... ANDkey_partN
=constN
Toute condition d'intervalle sur une clé primaire de
table InnoDB
ou BDB
.
Voci quelques exemples :
SELECT * FROMinnodb_table
WHEREprimary_key
< 10 ANDkey_col1
=20; SELECT * FROMtbl_name
WHERE (key1_part1
=1 ANDkey1_part2
=2) ANDkey2
=2;
L'algorithme d'intersection effectue des scans simultanés sur tous les index utilisés, et produit la séquence de lignes qu'il re¸oit des analyses d'index combinés.
SI toutes les colonnes utilisées dans la requêtes sont
couvertes par les index utilisés, toutes les lignes de la
table ne seront pas lues : EXPLAIN
indiquera Using index
dans la colonne
Extra
. Voici un exemple de cette
requête :
SELECT COUNT(*) FROM t1 WHERE key1=1 AND key2=1;
Si les index utilisés ne couvrent pas toutes les colonnes, les lignes complètes seront lues uniquement lorsque les conditions d'intervalles seront toutes satisfaites.
Si une des conditions est une condition sur une clé primaire
d'une table InnoDB
ou
BDB
, elle n'est pas utilisée pour lire les
lignes, mais pour filtrer les lignes lues par les autres
conditions.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.