Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/03/2011, 15h27   #1
Futur Membre du Club
 
Inscription : décembre 2010
Messages : 125
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 125
Points : 19
Points : 19
Par défaut Requete ACCESS trop lente par rapport a SQL SERVER 2005

Bonjour,

j'aimerai savoir pourquoi le temps de réponse d'une même requete diffère (largement) selon SQL SERVER 2003 ou ACCESS 2003.

Avec SQL, j'ai un bout de code qui demande 8 secondes.
Avec ACCESS, je peux attendre parfois plus de 10 minutes.


Voici mon code en SQL
Code :
1
2
3
4
5
6
7
8
SELECT TOP 5 a.TdProdDate, b.E_BALANCE_AMT, b.E_CUSTOMER_NAME, c.P_CACS_STATE_CODE
 
FROM (table1 as a LEFT JOIN table2 as b ON (a.C_ACCOUNT_NUMBER = b.E_ACCT_NUM) AND (a.TdProdDate = b.TdProdDate))
LEFT JOIN table3 as c ON (a.C_ACCOUNT_NUMBER = c.P_ACCT_NUM) AND (a.TdProdDate = c.TdProdDate)
 
WHERE C_ACTIVITY_DATE = '20101201'
 
ORDER BY NewID()
Voici mon code en ACCESS :

Code :
1
2
3
4
5
6
7
8
SELECT TOP 5 a.TdProdDate, b.E_BALANCE_AMT, b.E_CUSTOMER_NAME, c.P_CACS_STATE_CODE
 
FROM (table1 as a LEFT JOIN table2 as b ON (a.C_ACCOUNT_NUMBER = b.E_ACCT_NUM) AND (a.TdProdDate = b.TdProdDate))
LEFT JOIN table3 as c ON (a.C_ACCOUNT_NUMBER = c.P_ACCT_NUM) AND (a.TdProdDate = c.TdProdDate)
 
WHERE C_ACTIVITY_DATE = #12/01/2010#
 
ORDER BY Rnd([TdProdDate])
Pourquoi, et surtout comment améliorer cela s'il vous plait ?
apnw7931 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 17h11   #2
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 258
Points : 5 258
Salut,

Il nous faudrait plus d'info

Quelle quantité de données dans tes 3 tables ?

Tes tables sont-elles liées ou non ?

As-tu créé des index sur les champs de jointure ?

__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 17h14   #3
Futur Membre du Club
 
Inscription : décembre 2010
Messages : 125
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 125
Points : 19
Points : 19
Alors,

1/ ce sont des tables avec des milliers de records.
2/ elles sont liées puisque je fais des LEFT JOIN entre-elles... non ?
3/ non, je n'ai pas crée d'index. Pourquoi devrais-je puisqu'avec SQL, c'est ultra rapide ? Je ne suis pas familier avec les index..
apnw7931 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 17h28   #4
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 258
Points : 5 258
Citation:
2/ elles sont liées puisque je fais des LEFT JOIN entre-elles... non ?
Tes tables ce sont des tables attachées, contenues dans une autre base ou sont-elles dans ta base ?
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 17h30   #5
Futur Membre du Club
 
Inscription : décembre 2010
Messages : 125
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 125
Points : 19
Points : 19
Ces 3 tables sont dans une Data WareHouse.
Je fais appel à ces tables, avec des liens vers ces dernières.
apnw7931 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 17h44   #6
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 258
Points : 5 258
Donc ce sont ce que l'on appelle des "tables liées", ta base access possèdes des références vers ces données probablement stockées sur 1 serveur ce qui ralenti notablement l'accès et la manipulation de ces données distantes...
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 18h48   #7
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonsoir,

Si un accès en lecture seule convient à ton application, tu peux t'orienter vers des requêtes de type SQL Direct.
Ces requêtes devrons être écrite en SQL transact-Sql (le SQL de SQL Server).

Contrairement à une requête Access sur des tables liées (tables SQL Server liées par ODBC),
une requête SQL Direct est exécutée par le serveur du SGBD.

Sinon, je ne vois que des recordsets et une connexion ADODB au serveur SQL server.

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h04.


 
 
 
 
Partenaires

Hébergement Web