Bonjour,
Ces index sont ils identiques:
(champA ; champB)
et
(champB ; champA)
Si je fait un select avec une condition juste sur le champA, seul le premier index pourra être utilisé ?
Version imprimable
Bonjour,
Ces index sont ils identiques:
(champA ; champB)
et
(champB ; champA)
Si je fait un select avec une condition juste sur le champA, seul le premier index pourra être utilisé ?
Oui, car un index vectorise l'information.
A +
On est bien d'accord que l'index
(champB ; champA)
ne pourra jamais être exploité sur une requête du type:
select * from tableA where champA='...';
?
Ce n'est pas si simple....
http://sqlpro.developpez.com/cours/quoi-indexer/#LVII
En effet si votre index est couvrant et malgré le fait qu'il ne permette pas la recherche directe il y a fort à parier qu'il soit moins couteux de lire cet index par balayage que de lire toute la table par balayage...
A +
Ok merci pour l'info.
ça ne marche que pour les index couvrants ?
Quand vous dites cependant, "il y a fort a parier", je fait comment pour savoir ce qui est mieux ?
Je laisse sql server se débrouiller pour choisir ?
Faut il faire un "hint" pour forcer le choix de l'index ?
Existe t il une commande équivalent au explain de mysql pour sql server ?
D'avance merci pour vos réponses
Un index est couvrant par rapport à une requête. Il peut être couvrant pour une et pas pour l'autre.Citation:
ça ne marche que pour les index couvrants ?
En fonction de votre requête cela se mesure au nombre de pages manipulées. Par exemple à l'aide de SET STATISTICS IO ON vous saurez dans SSMS quelle est la consommation de pages avec tel ou tel index pour telle ou telle requête.Citation:
Quand vous dites cependant, "il y a fort a parier", je fait comment pour savoir ce qui est mieux ?
Oh que oui !Citation:
Je laisse sql server se débrouiller pour choisir ?
C'est généralement la chose la plus stupide !Citation:
Faut il faire un "hint" pour forcer le choix de l'index ?
Une petite dizaine... Des commandes dans l'IHM SSMS :Citation:
Existe t il une commande équivalent au explain de mysql pour sql server ?
CTRL + L : affichage graphique du plan estimé
CTRL + M : affichage graphique du plan réalisé (qui peut être différent du plan estimé)
MAJ + ALT + S : statistiques du client
...
Des commandes T_SQL
SET SHOWPLAN_TEXT ON / OFF
SET SHOWPLAN_XML ON / OFF
SET SHOWPLAN_ALL ON / OFF
SET STATISTICS IO ON / OFF
SET STATISTICS TIME ON / OFF
SET STATISTICS PROFILE ON / OFF
SET STATISTICS XML ON / OFF
...
A +