optimisation de requete

optimisation de requete - SQL/NoSQL - Programmation

Marsh Posté le 03-11-2003 à 18:20:12    

salut,
Voila ma requete qui avec peu d'enregistrement passe tres bien..mais qui dure des plombes quand la base est consequente :
Update Pannes set descriptif='test2' where (select id_panne from Histo_appels where Histo_appels.id_panne=Pannes.id_panne and Histo_appels.id_appel=4412)
 
Je suis sous access 2000..moyen de faire mieux je presume non???
 
Merci

Reply

Marsh Posté le 03-11-2003 à 18:20:12   

Reply

Marsh Posté le 03-11-2003 à 18:49:19    

et les tables, on doit les sucer de notre pouce?

Reply

Marsh Posté le 03-11-2003 à 19:05:16    

grosmethos a écrit :

salut,
Voila ma requete qui avec peu d'enregistrement passe tres bien..mais qui dure des plombes quand la base est consequente :
Update Pannes set descriptif='test2' where (select id_panne from Histo_appels where Histo_appels.id_panne=Pannes.id_panne and Histo_appels.id_appel=4412)
 
Je suis sous access 2000..moyen de faire mieux je presume non???
 
Merci


 
j'sais pas si ca passe sous access un truc genre


Update Pannes set descriptif='test2' from
Histo_appels where Histo_appels.id_panne=Pannes.id_panne and Histo_appels.id_appel=4412


Reply

Marsh Posté le 03-11-2003 à 23:29:35    

Euh... Elle est syntaxiquement fausse ta requête...
 
where id in (select ...) me semble mieu...
 
ou alors where exists(select ...) mais là je suis moins sûr de comprendre ce que tu veux faire...
dans tous les cas, Pannes.ID semble nécessiter d'être indexé (une clé primaire me semble une bonne solution :D), et Histo_Appel bénéficierait d'un index sur id_panne et id_appel.
 
Mais à mon avis, si tu corriges simplement ta requête, Access devrait 1000 fois mieu s'en sortir.
 
PS: là pour moi, il met à jour chaque ligne de ta table Pannes autant de fois qu'il y a de "id_pannes" qui correspondent dans "Histo_appels" ayant pour appel_id 4412 ce qui me semble assez farfelu comme façon de procéder...
 
Essaie ça :
 
Update Pannes set descriptif='test2' where id_pannes in (select id_panne from Histo_appels where id_appel=4412)
 
Ca me semble plus correct...

Reply

Sujets relatifs:

Leave a Replay

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