gfa | guillot a écrit :
Hello !
Ayant développé un logiciel basé sur Access 97 et Visual Basic 6 dans notre boite, nous nous retrouvons devant un problème assez bloquant, notamment au niveau temps d'exécution de certaines requêtes de sélection simples.
Je prends un exemple :
Nous avons une table "Poste" contenant 300 enregistrements et une table "Opération" en contenant 100 000.
Lorsqu'on exécute la requête "SELECT Operation.[Nom Operation], Poste.[Nom Poste] FROM Operation, Poste WHERE Operation.[Numero Poste] = Poste.[Numero Poste]", cela prends 2 bonnes secondes.
Alors que si la table "Opération" contient 10 000 enregistrements, c'est quasi-instantané.
Comment cela se fait-il que ce soit si lent ?
Pour info :
- mes index sont créés correctement.
- mes données dans les tables sont toutes bien déclarées
- j'utilise Access 97 (pas possible de changer facilement à cause de notre façon de programmer sous VB)
Avec un collègue, on pensait créer une base "archive", dans laquelle on mettrait les "anciennces" données, afin de limiter le nombre d'enregistrements et d'accélérer les procédures.
L'ennui c'est que si nos clients veulent voir et/ou récupérer ces données, cela sera hyper compliqué pour nous.
Une idée ?
On ne pourrait pas créer des sélections d'enregistrements dans une table provisoirement (genre les vues) et ensuite faire des requêtes dessus afin d'optimiser le tout ?
|
Salut,
Je pense que, pour commencer, il faudrait revoir la requête.
Avec un INNER JOIN je pense que cela devrait quand même aller légèrement plus vite.
Mais bon, c'est bien connu qu'Access n'est pas un foudre de guerre niveau rapidité... Peut-être juste encore une chose, des fois le mieux est l'ennemi du bien. Et si tu mets trop d'indexs sur une table Access met trop de temps à tenir à jour ses indexs par rapport à l'opération demandée. Donc des fois ça ne sert pas toujours de mettre 200 indexs. Bon, remarque cela ne concerne que les ajouts, suppression et mise à jour. Dans ton cas, le problème ne vient pas de là. Mais c'est bon à savoir.
Enfin, bon courage! |