Optimisation d'une requete mysql

Optimisation d'une requete mysql - SQL/NoSQL - Programmation

Marsh Posté le 10-03-2006 à 12:05:00    

Bonjour à tous,
 
Je cherche à optimiser cette requête qui met un temps fou dans un cas précis.
Si le WHERE exists est confirmé alors la requete est très rapide.  
En revanche si le "WHERE exists" n'est pas vérifié alors la requête devient vraiment très lente et met plus de 20mn pour seulement 10 000 enregistrements.
Quelqu'un connaitrait-il une méthode pour optimiser cette requête ou pour régler mon problème ?
Merci par avance.
 

Code :
  1. insert into lignes_cde_his
  2. SELECT * from lignes_cde
  3. where exists(select * from temp where DateTraitement != temp.DateTraitement2 AND SiteCode=temp.sitecode2);


Message édité par tartiflette75 le 10-03-2006 à 12:19:22

---------------
https://www.entrepreneur-liberte.com
Reply

Marsh Posté le 10-03-2006 à 12:05:00   

Reply

Marsh Posté le 10-03-2006 à 15:22:28    

ça fait pareil si tu remplaces le != par <>?

Reply

Marsh Posté le 10-03-2006 à 15:32:56    

déjà, dans un "exists", on met toujours "select null" ou "select 1", ça sert à rien de charger des données dans un segment temporaire pour rien.
 
ensuite, vérifie que datetraitement2 et sitecode2 sont bien indexés dans la table "temp" ainsi que dans la table "lignes_cde".
sinon, je ne vois rien qui cloche avec ta requête...
 
ps: MySQL combien? si c'est une version qui supporte les triggers, vu que ton truc ça semble être "je recopie les données de "lignes_cde" dans "lignes_cde_his" avant de les mettre à jour avec les lignes de "temp", je pense qu'un trigger permettrait de faire quelquechose de plus propre (sur "before update" ) tout et ce sertait certainement plus rapide, puisqu'il n'y aurait pas de requête à faire (le trigger va se contenter de faire un insert pour chaque ligne mise à jour, sans devoir aller cherches des données à partir d'autres tables comme ici)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed