J'ai une requête de ce type :
Table fait un peu plus de 10.000 enregistrements.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 DELETE FROM Table WHERE IDCLIENT NOT IN ( SELECT IDCLIENT FROM AutreTable )
AutreTable 1500.
Les deux tables ne contiennnet pas d'idclient null (cf. astuce dans la faq access).
Cette requête fonctionne parfaitement, manque de bol, elle est très longue (près de 5 minutes, un délai inacceptable dans mon appli).
Si je fais la même requête en remplaçant le NOT IN par un IN, c'est instantané.
Manque de bol, je ne peux pas tourner la requête (sachant que d'autres requêtes sont trop difficiles à tourner, ca sera immaintenable)
Je soupsonne JET 4 d'être très très mal optimisé.
J'ai essayé de tourner la requête différement, à savoir :
Mais ca ne marche pas sous access (arf)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DELETE Table.* FROM (Table INNER JOIN AutreTable ON Table.IDCLIENT = AutreTable)
Est-ce que quelqu'un connaîtrait la solution pour que cela marche correctement (faire une requête rapide avec ce qui est désiré, quitte à la formuler différement) ?
Partager