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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  optimisation de requete

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

optimisation de requete

n°1340273
rdams
Posté le 06-04-2006 à 10:04:16  profilanswer
 

Tout d'abord, j'utilise mysql 4.1
 
je travail sur 2 tables et le but est de remonter un groupe de 5 champs se traouvant dans la table1 et pas dans la table2
 
j'ai essayé ceci, ça fonctionne mais c'est long (plus de 2 min), les 2 tables on environ 7000 eregistrement et je remonte 23 lignes de resultat.

Code :
  1. SELECT t1.c1, t1.c2, t1.c3, t1.c4, t1.c5 FROM table1 t1
  2. LEFT JOIN table2 t2
  3. ON (t1.c1=t2.c1 and t1.c2=t2.c2 and t1.c3=t2.c3 and t1.c4=t2.c4 and t1.c5=t2.c5)
  4. WHERE valeur<>0
  5. and t2.c1 is null
  6. and t2.c2 is null
  7. and t2.c3 is null
  8. and t2.c4 is null
  9. and t2.c5 is null

 
 
y a t'il une possibilité d'optimiser la requete pour que ce soit plus rapide.  
 
merci

mood
Publicité
Posté le 06-04-2006 à 10:04:16  profilanswer
 

n°1340282
couak
Posté le 06-04-2006 à 10:15:59  profilanswer
 

oui ajoute un ou plusieurs indexes
vu la tronche de la requête je te dirais d'ajouter un index sur les 5 champs, tu passeras à une exécution d'une dizaine de secondes

n°1340296
anapajari
s/travail/glanding on hfr/gs;
Posté le 06-04-2006 à 10:27:00  profilanswer
 

sinon tu peux tenter de faire la requete avec un not exists plutot qu'une jointure...

n°1340341
rdams
Posté le 06-04-2006 à 10:58:11  profilanswer
 

je vais essayer les indexes, le not exists n'a pas l'air de fonctionner avec la version que j'utilise.

n°1340346
anapajari
s/travail/glanding on hfr/gs;
Posté le 06-04-2006 à 11:02:44  profilanswer
 
n°1340369
rdams
Posté le 06-04-2006 à 11:24:43  profilanswer
 

voila ma requete

Code :
  1. SELECT t1.c1, t1.c2, t1.c3, t1.c4, t1.c5 FROM table1 t1
  2. where not exists (select t2.c1, t2.c2, t2.c3, t2.c4, t2.c5 from table2 t2
  3. where t1.c1=t2.c1 and t1.c2=t2.c2 and t1.c3=t2.c3 and t1.c4=t2.c4 and t1.c5=t2.c5)


 
j'avais une close sue valeur qui appartien à t1  
valeur<>0 où la placer?

n°1340416
anapajari
s/travail/glanding on hfr/gs;
Posté le 06-04-2006 à 11:51:57  profilanswer
 

Code :
  1. SELECT
  2.  t1.c1,
  3.  t1.c2,
  4.  t1.c3,
  5.  t1.c4,
  6.  t1.c5
  7. FROM
  8.  table1 t1
  9. WHERE
  10.  t1.valeur <> 0 AND
  11.  NOT EXISTS (
  12.    SELECT
  13.      t2.c1 FROM table2 t2
  14.    WHERE
  15.       t1.c1=t2.c1 AND
  16.       t1.c2=t2.c2 AND
  17.       t1.c3=t2.c3 AND
  18.       t1.c4=t2.c4 AND
  19.       t1.c5=t2.c5
  20. )



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

  optimisation de requete

 

Sujets relatifs
Optimisation d'une requete mysqloptimisation de requete
Optimisation du temps d'execution d'une requete sous oracleOptimisation de requete PL/SQL
[MySQL] Besoin d'aide - Optimisation d'une requête très lourdeOptimisation d'une requete SQL ??
SQL(server) optimisation d'une requête[MySQL] Optimisation requete sur ENORME table ...
[PHP - MYSQL] optimisation d'une requeteOptimisation requete simple
Plus de sujets relatifs à : optimisation de requete


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