|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
![]() ![]() Idriss NeumannConsultant en SSII et étudiant au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 1 972 ![]() |
Bonsoir.
Je ne suis pas un grand expert du SQL mais je me posais une question depuis quelque temps à laquelle je n'ai pas eu de réponses. Alors je vous la pose ici :Il y a quelque temps, j'ai appris que ce type de requête avec jointure (en SQL 89 parce qu'en cours on en est toujours au SQL 89* ) :Code sql :
était plus optimisé que ce type de requête (SQL 89 toujours) : Code sql :
car on limite le nombre d'occurrences avant de faire la jointure (plutôt que de faire la jointure sur toutes les occurrences et limiter après). Je me suis donc demandé, si cette optimisation était conservée en SQL 92 avec ce type de requête : Code sql :
En gros est-ce que cette requête va se comporter comme la première ou comme la seconde ? Logiquement la jointure est effectué avant la clause WHERE (avant donc de limiter le nombre d'occurrences) mais je n'en avais pas la certitude ... Je n'ai pas de base assez grosse sous la main pour voir une différence. J'ai donc demandé au prof qui n'en savais rien lui non plus ...Et vous, avez-vous une idée ? merci d'avance Cordialement, Idriss P.S : j'ai aussi testé le temps d'exécution sur une base MySQL avec PHPMyAdmin mais je ne suis pas sûr de l'entière fiabilité car pour une même requête (avec les mêmes occurrences), le temps d'exécution varie ... * pour les jointures internes seulement |
||||||
|
00
|
|
|
#2 |
![]() ![]() |
Fort heureusement l'ordre des filtres et des tables n'ont plus d'importance dans les performances depuis longtemps !
On le constate en regardant les plans et les traces d'exécutions. Vos trois requêtes sont donc parfaitement équivalentes en terme de performance. Seule la dernière est correctement écrite bien entendu !
__________________
Email : http://scr.im/waldar |
|
10
|
|
|
#3 |
![]() ![]() Idriss NeumannConsultant en SSII et étudiant au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 1 972 ![]() |
Merci de la réponse
(donc ce qu'on nous apprends en cours n'est plus d'actualité tout comme le SQL employé ). Cordialement, Idriss |
|
00
|
|
|
#4 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 948 ![]() |
Je modère les propos :
ceci est vrai, si vous êtes sur un bon SGBDR, c'est à dire pas sur un SGBDR fichier genre Access et bien entendu pas sous MySQL !!!! A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
10
|
|
|
#5 | |
![]() ![]() Idriss NeumannConsultant en SSII et étudiant au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 1 972 ![]() |
Citation:
Cordialement, Idriss |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com