|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre actif
![]() Vincent Ingénieur développement logiciels Inscription : août 2002 Messages : 237 ![]() |
Petite question subsidiaire :
En terme de performance, en règle générale, du plus rapide au moins rapide c'est : 1) not exists 2) not in 3) jointure externe ou la jointure externe est en 1er ? Si quelqu'un pourrait me fournir un lien vers la description, je l'avais déjà vu quelque part mais je ne sais plus où ? Merci ;o) |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
entre NOT IN et NOT EXISTS ça dépend de la cardinalité de la sous-requête... il n'y a pas de régle. Quand à la jointure externe, elle fait forcément un FTS donc a priori pas performant... sauf peut-être s'il y a une FK.
|
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Vincent Ingénieur développement logiciels Inscription : août 2002 Messages : 237 ![]() |
J'avais vu çà
le prédicat EXISTS est en général plus rapide que le prédicat IN dans http://sql.developpez.com/sqlaz/sousrequetes/ Mais bon c'est difficile, j'ai l'impression, de donner une règle fixe ? |
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
oui mais là on parle de NOT EXISTS et NOT IN
|
|
|
00
|
|
|
#5 |
![]() Inscription : janvier 2005 Messages : 1 778 ![]() |
Attention, des fois ca depend de la version Oracle.
Je pense, que (en géneral) NOT IN est plus rapide en 8i NOT EXISTS est plus rapide en 9i
__________________
Questionnaires : Testez vos connaissances Mes articles : Les Fichiers Redo / SCN : System Change Number / Fichier de Contrôle : Administration |
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
ha tiens... je ne connaissais pas cette nuance
|
|
|
00
|
|
|
#7 |
![]() Inscription : janvier 2005 Messages : 1 778 ![]() |
C'est d'après mes constatations entre la 8i et la 9i.
Normalement, IN vérifie si la valeur est contenu dans une liste EXISTS est different de IN, elle vérifie seulement l'existence des lignes ce qui est plus rapide normalement.
__________________
Questionnaires : Testez vos connaissances Mes articles : Les Fichiers Redo / SCN : System Change Number / Fichier de Contrôle : Administration |
|
|
00
|
|
|
#8 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
ATTENTION de ne pas confondre la comparason IN vs EXISTS et NOT IN vs NOT EXISTS
|
|
|
00
|
|
|
#9 |
|
Membre actif
![]() Vincent Ingénieur développement logiciels Inscription : août 2002 Messages : 237 ![]() |
Oui car le "NOT IN" ou "NOT EXISTS" est obligé de parcourir l'ensemble à l'inverse de "IN" ou EXISTS" qui s'arrête dès qu'il a trouvé.
|
|
|
00
|
|
|
#10 |
![]() Inscription : janvier 2005 Messages : 1 778 ![]() |
Une petite lécture ici : http://www.dbspecialists.com/present...semijoins.html
__________________
Questionnaires : Testez vos connaissances Mes articles : Les Fichiers Redo / SCN : System Change Number / Fichier de Contrôle : Administration |
|
|
00
|
|
|
#11 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Mouais... il manque quand même un élément extrêmement important dans la démo c'est la hash_area_size et la nuance en fonction des cardinalités
pour info aussi gare à la gestion du NULL aussi |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com