Bonjour, juste une petite question :
Quelle est la différence entre créer un indexe sur les champs A et B et créer 2 indexes, un pour A et un pour B ?
Merci
Version imprimable
Bonjour, juste une petite question :
Quelle est la différence entre créer un indexe sur les champs A et B et créer 2 indexes, un pour A et un pour B ?
Merci
Tout dépend du type de condition que tu as dans tes clauses WHERE :
- si tu as des conditions sur A seul : index sur A
- si tu as des conditions sur B seul : index sur B
- si tu as des conditions sur A seul ou bien sur A et B : index sur A, B
- si tu as des conditions sur A seul ou bien sur A et B ou bien sur B seul : index sur A, B et sur B
Après à partir de 9i, l'index sur A,B peut être utilisé pour des recherches sur B seul (skip scan) si la colonne A est peu sélective même si ca m'avait semblé quand même bcp plus long qu'un index sur B.
Laly.
Ok merci
Donc si je comprend bien, l'ordre des champs lors de la creation des indexes est importantes ?
est différent deCode:
1
2
3
4 CREATE INDEX INDEX_TOTO ON TOTO(A, B) ;
?Code:
1
2
3
4 CREATE INDEX INDEX_TOTO ON TOTO(B, A) ;
oui et la condition la plus importante à mon avis est la selectivité des indexes.
Prends la colonne la plus selective en premier
oui et sinon, merci de penser aux balises CODE ;)
Bonjour Aline,
Ca n'est pas vrai ! Cf. http://asktom.oracle.com/pls/ask/f?p...:1409668892797Citation:
Envoyé par aline
De plus mettre les colonnes les moins sélectives d'abord permet d'utiliser l'option COMPRESS des indexes et d'économiser de la place ainsi que d'améliorer la performance des indexes.
Laly.
Bonjour Laly, cela faisait longtemps! 8)
Et bien merci pour le lien et pour remettre en cause sertaines idée reçues!