Récuperation enregistrement le plus récent : Soucis de performance
Bonjour,
On m'a fourni une base de donnée contenant un table qui se présente sous la forme suivante :
frefarticle |
Données (plusieurs colonnes) |
fdatelivdem (une date) |
1 |
xxxxx |
05/05/2014 |
1 |
xxyxx |
01/01/2014 |
1 |
xxyyy |
02/08/2015 |
2 |
aaxxx |
15/12/2014 |
2 |
zzzuu |
02/01/2015 |
Pour chaque référence, je ne veux récupérer que les données les plus récentes.
Soit pour ce exemple :
frefarticle |
Données (plusieurs colonnes) |
fdatelivdem (une date) |
1 |
xxyyy |
02/08/2015 |
2 |
zzzuu |
02/01/2015 |
J'utilise ensuite ces données pour compléter des données dans un classeur Excel.
Jusque là, pas de soucis,
depuis Excel, j'ouvre un recordset avec la requête suivante :
Code:
1 2 3
| SELECT * FROM NomTable a WHERE a.fdatelivrdem =
(SELECT MAX(b.fdatelivrdem) FROM NomTable b WHERE b.frefarticle=a.frefarticle GROUP BY b.frefarticle)
ORDER BY a.frefarticle |
Le problème ici vient du fait que cette base est vraiment très grande (plus de 140 000 enregistrements) ce qui fait que le temps de traitement est énorme (je ne suis jamais allé jusqu'au bout).
Y a-t-il un moyen d'optimiser cette requête et/ou un travail en amont à réaliser sur la table, sous access afin de rendre la procédure réalisable ? :/
J'ai déjà supprimé les champs dont je ne me servais pas et réduit la base au maximum en supprimant les données trop anciennes pour être utiles (Il s'agit d'une copie que l'on m'envoie, je peux lui faire "subir" n'importe quoi sans danger)
Merci de votre aide