Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1403 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Quelle requête est la plus rapide?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Quelle requête est la plus rapide?

n°1557303
Decapfour
Posté le 09-05-2007 à 12:38:38  profilanswer
 

SELECT c.*, f.* FROM Contrat c INNER JOIN FactureClient f ON c.id_contrat = f.id_contrat WHERE c.destination = (paramètre php).
 
ou
 
SELECT c.*, f.* FROM Contrat c, FactureClient f WHERE c.id_contrat = f.id_contrat AND c.destination = (paramètre php).
 
En gros je ne peux pas faire les tests moi même pour une raison X mais il y a environ 15 000 entrées dans contrats et 10 000 dans factures, et environ 20 champs dans chaque table.
 
Le but est d'optimiser le temps d'execution de la requete.
Je cherche donc des petits moyens ( en particulier sur les jointures de tables, certaines fois il y a 5 jointures avec 10000 entrées en moyenne par table ) pour optimiser ces requetes.
 
 
Merci d'avance

mood
Publicité
Posté le 09-05-2007 à 12:38:38  profilanswer
 

n°1557356
MagicBuzz
Posté le 09-05-2007 à 14:14:01  profilanswer
 

La première est plus rapide... A condition de n'exécuter qu'une seule fois la requête, et le gain est de l'ordre de 0,00000000000001 % (temps de compilation)
 
Cependant, la première solution ouvre la perspective d'utilisation de certains aspects complexes du langage SQL, qui ne sont pas permis (ou limités) avec la seconde syntaxe.

n°1557370
Decapfour
Posté le 09-05-2007 à 14:39:11  profilanswer
 

Sinon il y aurait une solution pour des jointures avec des grosses tables comme celles ci pour optimiser le temps d'execution? Le plus souvent c'est un parcours des tables avec les id de la table 1 qui sont égaux aux id de la table 2 etc...
 
En fait ce que je veux savoir c'est comment traiter efficacement les jointures entre deux "grosses" tables.
 
Juste un petit apparté :  
 
SELECT ....... FROM table1 t1 INNER JOIN ( table2 t2 INNER JOIN (table3 t3 INNER JOIN table4 t4 ON t4.id = t3.id = 2 ) ON t2.id = t3.id ) ON t1.id = t2.id WHERE ......
 
Cela est t'il possible?


Message édité par Decapfour le 09-05-2007 à 14:44:52
n°1557380
Pablo Escr​obarbe
Retour d'exil
Posté le 09-05-2007 à 14:54:59  profilanswer
 

ON (T4.id=T3.id and T3.id=2) non?

n°1557384
Decapfour
Posté le 09-05-2007 à 14:58:00  profilanswer
 

Oui voila
Le reste c'est bon?

n°1557386
Pablo Escr​obarbe
Retour d'exil
Posté le 09-05-2007 à 14:59:11  profilanswer
 

Je sais pas j'ai pas regardé en détail mais ça me semble correct.[:petrus75]


Message édité par Pablo Escrobarbe le 09-05-2007 à 15:00:36
n°1557391
MagicBuzz
Posté le 09-05-2007 à 15:01:27  profilanswer
 

oui oui, ce genre de requête est parfaitement possible.
 
pour "opitmiser" des jointures toutes bêtes comme ça, y'a pas 36 choses à faire :
1/ vérifier que les clés primaires existent bien sur les tables
2/ vérifier que les clés étrangères existent bien sur les relations
3/ vérifier que les clés étrangères tapent bien sur des clés primaires et non des clés alternatives (dans ce cas, même un index unique sur la clé étrangère en question, et non seulement une contrainte d'unicité)

n°1558039
xonop
Posté le 10-05-2007 à 14:16:17  profilanswer
 

Pour moi ces deux écritures sont rigoureusement identiques, je ne sais pas sur quel SGBD celà doit tourner, mais en tout cas sur Oracle le plan d'exécution sera exactement le même.
 

Citation :

Cependant, la première solution ouvre la perspective d'utilisation de certains aspects complexes du langage SQL, qui ne sont pas permis (ou limités) avec la seconde syntaxe.


 
Je ne vois pas en quoi la deuxième écriture limite les perspectives (en tout cas sur Oracle ...) ?

n°1558098
MagicBuzz
Posté le 10-05-2007 à 15:03:05  profilanswer
 

left outer join en cascade par exemple, full outer join aussi.
ces fonctionnalités ne sont possible qu'avec la syntaxe verbeuse.

n°1558109
xonop
Posté le 10-05-2007 à 15:09:17  profilanswer
 

Ah oui en effet !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Quelle requête est la plus rapide?

 

Sujets relatifs
problème de requete en fonction de l'url de la page[MySQL] Requête avec jointure qui fonctionne pas avec MySQL5
Savoir si requete bien executée + prob CDORequête préparée en insert et colonne "not null"
Afficher le résultat d'une requête mysql sous forme d'hyperlienCorrection d'une requete SQL Delete....
pg_num_rows ou count(id), le plus rapide ?Variable dans macro Excel et requête SQL
[MySQL] Question rapide sur efficacité d'une requêteQuestion REQUETE mySQL (simple... mais rapide)
Plus de sujets relatifs à : Quelle requête est la plus rapide?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR