Bonjour,
j'ai une appli avec des tables liées un peu partout qui devient très lente d'exécution dès lors que le nombre d'utilisateurs augmente. environ 15.
Je vais essayer de détailler:
sur le réseau, j'ai une base B1 avec des tables allant de 20 000 enregistrements à 100 000 par table. Ces tables sont utilisées en lecture.
J'ai une autre base B2 sur le réseau avec des tables plus légères (maxi 20 000 enreg en fin de journée) dans lesquelles j'insère des données.
J'ai la base appli dupliqué sur chaque poste des utilisateurs. 15 copier/coller de l'appli. La base comprends uniquement 3 tables en local et les tables des bases B1 ert B2 en tables liées.
L'appliest composé:
d'un form principal
qui ajoute des données dans les tables local.
de 2 sous form
1er ss form : Affiche des données présente dans la base B1
2eme ss form Affiche des données présente dans la base B1
D'un boutton qui insère des données dans la base B2.
Les ralentissements:
Les deux ss form sont très long à s'afficher lorsque plusieurs utilisateurs travaille sur les tables de B1. Ceux ci sont raffraichi très souvent (donc a chaque rafraichissement --> lenteur).
Quand j'insère dans la base B2 parfois ça met 2 minutes à s'exécuter!!
Requetes :
R1 (Affiche dans le ss form 1)
1 2
| SELECT [Union - Transaction].ref_numero, [Union - Transaction].ref_nom, [TRV - Evénements DEVON].*
FROM [TRV - Evénements DEVON] LEFT JOIN [Union - Transaction] ON ([TRV - Evénements DEVON].Code = [Union - Transaction].Transaction_numero) AND ([TRV - Evénements DEVON].Evénement = [Union - Transaction].nom_evenement) AND ([TRV - Evénements DEVON].Application = [Union - Transaction].application); |
Union - Transaction est en fait une autre requete:
1 2 3 4 5 6 7
| SELECT [Rap - Transaction].Transaction_numero, [Rap - Transaction].nom_evenement,[Rap - Transaction].ref_numero,[Rap - Transaction].ref_nom,[Rap - Transaction].application
FROM [Rap - Transaction]
union
SELECT [Rap - Transaction controle].Transaction_numero, [Rap - Transaction controle].nom_evenement,[Rap - Transaction controle].ref_numero,[Rap - Transaction controle].ref_nom,[Rap - Transaction controle].application
FROM [Rap - Transaction controle]
UNION SELECT [Rap - Transaction centrale].Transaction_numero, [Rap - Transaction centrale].nom_evenement,[Rap - Transaction centrale].ref_numero,[Rap - Transaction centrale].ref_nom,[Rap - Transaction centrale].application
FROM [Rap - Transaction centrale]; |
R2 Affiche dans le ss form 2:
1 2
| SELECT [PC - 01].ref_nom, [PC - 01].ref_numero, [TRV - Ecritures Sysco].*
FROM [TRV - Ecritures Sysco] LEFT JOIN [PC - 01] ON [TRV - Ecritures Sysco].[Référence ligne] = [PC - 01].numero_ligne_comptable; |
et PC 01:
1 2 3 4 5 6 7
| SELECT [Rap - Ligne Comptable].numero_ligne_comptable, [Rap - Ligne Comptable].ref_numero, [Rap - Ligne Comptable].ref_nom
FROM [Rap - Ligne Comptable]
union
SELECT [Rap - Ligne Comptable Controle].numero_ligne_comptable, [Rap - Ligne Comptable Controle].ref_numero, [Rap - Ligne Comptable Controle].ref_nom
FROM [Rap - Ligne Comptable Controle]
UNION SELECT [Rap - Ligne Comptable Centrale].numero_ligne_comptable, [Rap - Ligne Comptable Centrale].ref_numero, [Rap - Ligne Comptable Centrale].ref_nom
FROM [Rap - Ligne Comptable Centrale]; |
R3 requetes d'insertions
db.Execute "INSERT INTO [Rap - Entete Controle] SELECT * FROM [Rap - Entete] WHERE ref_numero= " & ref_number.Value & " and ref_nom='" & ref_name.Value & " ';"
Pensez-vous que cela vient du réseau ? du fait d'avoir des tables liés allant jusqu'a 100 000 enreg ? du nombre d'utilisateurs ? ou des requetes ?
Merci pour votre aide
Partager