
Envoyé par
esperanto
On est d'accord.
Ben non... Vous affirmez encore une fois n'importe quoi...... Je vous cite :
Pour faire court, l'index est utilisé si et seulement si au moins la première colonne est utilisée, et ensuite si la deuxième, la troisième... apparaît dans la requête.
Hé non !!!! Vous dites :
l'index est utilisé si et seulement si au moins la première colonne est utilisée
Ceci est faux... L'index sera utilisé par l'optimiseur si il juge moins couteux d’accéder à cet index que de passer par la table.
Par exemple pour une table de personnes comportant de multiples colonnes et un grand nombre de lignes, et un index sur le nom,
une requête du genre :
SELECT * FROM persone WHERE nom BETWEEN 'L' AND 'N'
a peut de chance de prendre l'index ni en scan (balayage) ni en seek (recherche)
En revanche cette requête utilisera un scan :
SELECT nom FROM MaTable WHERE Nom <> 'MARTIN'
Et celle-ci un seek :
SELECT nom FROM persone WHERE nom BETWEEN 'L' AND 'N'
Avec plusieurs colonnes, ça se complique. Si la jonction des prédicat est faite avec AND et la rechercher est vectorielle alors, il se peut que l'index soit utilisé en recherche... Encore une fois, toute ceci est expliqué dans mon livre sur le langage SQL...
A +
Partager