Requete SQL trop longue

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel__D
Le #18529261
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"
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
Le #18536141
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" 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" 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
Franz
Le #18547111
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" 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" 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









Publicité
Poster une réponse
Anonyme