Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Requete SQL trop longue

3 réponses
Avatar
Michel Angelosanto
Bonjour,

j'ai une table Access avec les données numero_agence, date, vendeur,
mt_vente j'y accède en dao via Excel vba

j'ai une liste d'agences et pour chaque agence, je fais une requête du style
select vendeur,mt_vente from matable where date='aaaammjj' and
numero_agence='gggg'
il y a 13 dates différentes dans la table et je suppose que toute la table
est balayée à chaque select

le problème c'est que chaque select dure environ 30 secondes or j'en ai 500
à faire d'ou un temps d'exécution de plusieurs heures.(la table fait 800Mo)

une solution serait de créer une table avec uniquement les enregistrements
correspondant à la date qui est la même pour tout le traitement, cela fait
une manip de plus et en plus après chaque extraction, il faut penser à
supprimer cette table temporaire.

Je pensais utiliser une vue avec la date voulue en filtre, pensez-vous que
cela permette de gagner du temps (divisé par 13) ou est-ce juste une
facilité d'écriture.

Auriez-vous une autre solution plus rapide?

--
Michel Angelosanto, Bordeaux
Dernières mises à jour du site Voyage au pays Internet
http://angelosa.free.fr/index.php?t=8

3 réponses

Avatar
Michel__D
Bonjour,

Quelques remarques :

1) Le champ [date] devrait être de type Date

2) Ton champ [numéro_agence] aurait tout intérét à être de type
numérique.

Bref, j'ai l'impression qu'une réflexion sur la conception de la base ne
serait pas superflu si tu souhaite obtenir un meilleur rendement.


"Michel Angelosanto" a écrit dans le message de news:%
Bonjour,

j'ai une table Access avec les données numero_agence, date, vendeur,
mt_vente j'y accède en dao via Excel vba

j'ai une liste d'agences et pour chaque agence, je fais une requête du style
select vendeur,mt_vente from matable where date='aaaammjj' and
numero_agence='gggg'
il y a 13 dates différentes dans la table et je suppose que toute la table
est balayée à chaque select

le problème c'est que chaque select dure environ 30 secondes or j'en ai 500
à faire d'ou un temps d'exécution de plusieurs heures.(la table fait 800Mo)

une solution serait de créer une table avec uniquement les enregistrements
correspondant à la date qui est la même pour tout le traitement, cela fait
une manip de plus et en plus après chaque extraction, il faut penser à
supprimer cette table temporaire.

Je pensais utiliser une vue avec la date voulue en filtre, pensez-vous que
cela permette de gagner du temps (divisé par 13) ou est-ce juste une
facilité d'écriture.

Auriez-vous une autre solution plus rapide?

--
Michel Angelosanto, Bordeaux
Dernières mises à jour du site Voyage au pays Internet
http://angelosa.free.fr/index.php?t=8



Avatar
Michel Angelosanto
J'ai donné un exemple simple, bien entendu mes dates sont au format date et
les données numériques sont bien en numérique.

La solution que j'ai trouvée consiste à créer à la volée une copie de la
base en sélectionnant les enregistrements utiles seulement.(date et autres
critères)
ensuite je consulte cette copie pour explorer les vendeurs.
ensuite je l'efface avant de mettre à jour une autre feuille à une autre
date.
Maintenant la mise à jour dure moins de 1 minute.(au lieu de 4h)

A+

"Michel__D" a écrit dans le message de
news:glubet$337$
Bonjour,

Quelques remarques :

1) Le champ [date] devrait être de type Date

2) Ton champ [numéro_agence] aurait tout intérét à être de type
numérique.

Bref, j'ai l'impression qu'une réflexion sur la conception de la base ne
serait pas superflu si tu souhaite obtenir un meilleur rendement.


"Michel Angelosanto" a écrit dans le message de
news:%
Bonjour,

j'ai une table Access avec les données numero_agence, date, vendeur,
mt_vente j'y accède en dao via Excel vba

j'ai une liste d'agences et pour chaque agence, je fais une requête du
style
select vendeur,mt_vente from matable where date='aaaammjj' and
numero_agence='gggg'
il y a 13 dates différentes dans la table et je suppose que toute la
table
est balayée à chaque select

le problème c'est que chaque select dure environ 30 secondes or j'en ai
500
à faire d'ou un temps d'exécution de plusieurs heures.(la table fait
800Mo)

une solution serait de créer une table avec uniquement les
enregistrements
correspondant à la date qui est la même pour tout le traitement, cela
fait
une manip de plus et en plus après chaque extraction, il faut penser à
supprimer cette table temporaire.

Je pensais utiliser une vue avec la date voulue en filtre, pensez-vous
que
cela permette de gagner du temps (divisé par 13) ou est-ce juste une
facilité d'écriture.

Auriez-vous une autre solution plus rapide?

--
Michel Angelosanto, Bordeaux
Dernières mises à jour du site Voyage au pays Internet
http://angelosa.free.fr/index.php?t=8







--
Michel Angelosanto, Bordeaux
Dernières mises à jour du site Voyage au pays Internet
http://angelosa.free.fr/index.php?t=8
Avatar
Franz
As-tu pensé à un index sur les colonnes intéressées par les filtres
d'extractions?
Salut.

Michel Angelosanto a écrit :
J'ai donné un exemple simple, bien entendu mes dates sont au format date et
les données numériques sont bien en numérique.

La solution que j'ai trouvée consiste à créer à la volée une copie de la
base en sélectionnant les enregistrements utiles seulement.(date et autres
critères)
ensuite je consulte cette copie pour explorer les vendeurs.
ensuite je l'efface avant de mettre à jour une autre feuille à une autre
date.
Maintenant la mise à jour dure moins de 1 minute.(au lieu de 4h)

A+

"Michel__D" a écrit dans le
message de news:glubet$337$
Bonjour,

Quelques remarques :

1) Le champ [date] devrait être de type Date

2) Ton champ [numéro_agence] aurait tout intérét à être de type
numérique.

Bref, j'ai l'impression qu'une réflexion sur la conception de la base ne
serait pas superflu si tu souhaite obtenir un meilleur rendement.


"Michel Angelosanto" a écrit dans le message de
news:%
Bonjour,

j'ai une table Access avec les données numero_agence, date, vendeur,
mt_vente j'y accède en dao via Excel vba

j'ai une liste d'agences et pour chaque agence, je fais une requête
du style
select vendeur,mt_vente from matable where date='aaaammjj' and
numero_agence='gggg'
il y a 13 dates différentes dans la table et je suppose que toute la
table
est balayée à chaque select

le problème c'est que chaque select dure environ 30 secondes or j'en
ai 500
à faire d'ou un temps d'exécution de plusieurs heures.(la table fait
800Mo)

une solution serait de créer une table avec uniquement les
enregistrements
correspondant à la date qui est la même pour tout le traitement, cela
fait
une manip de plus et en plus après chaque extraction, il faut penser à
supprimer cette table temporaire.

Je pensais utiliser une vue avec la date voulue en filtre,
pensez-vous que
cela permette de gagner du temps (divisé par 13) ou est-ce juste une
facilité d'écriture.

Auriez-vous une autre solution plus rapide?

--
Michel Angelosanto, Bordeaux
Dernières mises à jour du site Voyage au pays Internet
http://angelosa.free.fr/index.php?t=8