UTILISATION D'ACCESS : GRANDE LENTEUR + BUG

cantag -  
blux Messages postés 27993 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'utilise ACCESS 2003 depuis quelques mois et je suis confronté à des problèmes de lenteur très désagréables et dernièrement un bug :

1er PROBLEME
- j'ai importé dans ACCESS une vingtaine de tables très simples : 4 colonnes avec environ 3000 lignes (jusque là tout va bien),
- ça se complique en faisant une requête avec quelques tables (jointure de chacune d'elles par les 3 premiers champs), ça fonctionne correctement mais plus je lie de tables, plus c'est long bien sur, mais au point qu'après les avoir toutes liées entre elles, la requête dure environ 45mn !!!
- mais ça fonctionne ... j'ai bien en sortie la liste de résultats demandée, excepté que le traitement est "insupportable" !!!

Remarques
- Chaque table a le format suivant : date + 3 données numériques "courtes" (2 au "format octet", puisqu'il s'agit de chiffres de 1 à 9 et la 3ème en réel simple avec 2 décimales puisqu'il s'agit de valeurs en € ne dépassant jamais quelques dizaines)
- Ma liste de résultats comporte les 3 premiers champs liés (date + 2 champs chiffres), sélectionnés à partir de la table que je considère comme la table master, celle qui a le maximum d'enregistrements, plus la 4ème colonne de chacune des autres tables (il y a donc beaucoup de données, mais rien de complexe à priori),
- J'utilise ACCESS à la fois avec mon PC de bureau et avec un PC portable, et le comportement est à peu près le même sur les deux machines !

2ème PROBLEME
- dernièrement, en voulant faire sensiblement les mêmes manip : import d'une vingtaine de table (OK) + requête, ACCESS n'a pas fonctionné et a affiché le message suivant : "ESPACE INSUFFISANT SUR LE DISQUE TEMPORAIRE"
- de nouveau le même problème sur mon PC de bureau et sur le PC portable !
- pour info, j'ai 17Go d'espace disponible sur le disque C: (un peu moins sur le portable).

Quelqu'un aurait-il déjà eu ces problèmes ?
Seraient-ils liés à la version que j'ai achetée ... dans une médina au Maroc !
Y aurait-il une solution de mise à jour officielle ?
D'avance merci pour votre aide.
Georges

3 réponses

blux Messages postés 27993 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Salut,

il faut peut-être mettre des index sur les champs qui sont l'objet de jointures, voire revoir ton modèle de données...

ACCESS, comme beaucoup de 'SGBDR' est très sensible au modèle de données...
0
cantag
 
Bonjour,
et merci pour ta réactivité.

- J'ai oublié de mentionner qu'en plus des 4 colonnes, chacune des tables possède une colonne "Numéro" qu'ACCESS a créé pour l'indexation lors de l'import.
En revanche, ces index ne sont pas liés car le nombre d'enregistrements est différent d'une table à une autre (l'ordre de grandeur est néanmoins le même, environ 3000).

- Qu'entends-tu par "revoir ton modèle de données... " parce qu'il est simple et je ne vois pas quoi faire de plus ?

A +
Georges
0
blux Messages postés 27993 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Le 'numéro' n'est pas employé dans ce cas-là...

Seuls sont utilisés les champs qui sont dans les jointures, d'où l'intérêt de les indexer.

parce qu'il est simple et je ne vois pas quoi faire de plus ?
Ce n'est pas parce qu'un modèle de données parait simple qu'il l'est au final lorsqu'on exécute des requêtes...

Dans le cas où l'on ne prévoit pas d'index sur des colonnes qui font partie d'une jointure, le SGBD est OBLIGE de parcourir l'intégralité de la table pour trouver les enregistrements qui répondent au critère, ce qui fait l'effet d'un produit cartésien ensembliste, toutes les lignes sont comparées avec toutes les autres lignes de toutes les autres tables...
0
cantag
 
Bonjour,

Merci pour toutes ces précisions.
Je ne maitrise pas bien l'indexation et mon affaire n'a pas l'air d'être simple.

J'ai fait quelques tests et les résultats sont "hallucinants" !!!
Ma base ACCESS possède 21 tables de 5 colonnes et environ 3000 lignes.
J'ai une table Master (celle qui possède l'intégralité des lignes) et je lie toutes les autres à celle-ci via 3 champs (DATE + 2 champs possédant des chiffres de 1 à 9).

- lorsque je lance ma requête (liste de résultat = les 3 champs précédents + la 5ème colonne de chacune des tables), elle dure donc environ 30 minutes !!!
- j'ai enlevé les 3 dernières tables dans ma requête et là ... elle a été QUASI IMMEDIATE !!!
Je me suis dit que ces tables étaient plus ou moins "pourries" (alors que rien n'apparaissait d'anormal) et je les ai donc réimportées
- j'en ai remis une, la requête a duré 2mn,
- j'ai remis la seconde, elle a duré 6mn,
- j'ai remis la 3ème, elle a duré 30mn : même problème. les tables n'étaient donc pas "pourries" !

- j'ai alors enlevé les 3 premières tables cette fois-ci et là, même résultat, la requête a été QUASI IMMEDIATE !!!
Je commence à me dire que c'est ACCESS QUI DOIT ETRE LIMITE !!!

A moins, qu'il ne s'agisse d'un problème … d'indexation, mais je ne sais pas comment m'y prendre ?
Au passage, j'ai enlevé l'indexation qu'ACCESS avait mis systématiquement sur la 1ère colonne de chacune des tables, parce que celle-ci ne sert vraiment à rien.

- dois-je dans chacune des tables indexer les 3 champs communs ?
- dois-je créer une indexation (clé primaire) sur les 3 champs de chacune de ces tables ?

Merci de ton aide
Georges

PS: j'ai résolu le second problème (message "espace insuffisant sur le disque temporaire"), c'était du au fait que j'avais sélectionné deux tables mais sans les lier aux autres (le message est bien "pourri"). :
0
blux Messages postés 27993 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
- j'en ai remis une, la requête a duré 2mn,
- j'ai remis la seconde, elle a duré 6mn,
- j'ai remis la 3ème, elle a duré 30mn : même problème. les tables n'étaient donc pas "pourries" !

On arrive donc bien à des durées qui augmentent de façon non linéaire, c'est-à-dire que l'on fait un produit cartésien à la sélection...

- j'ai alors enlevé les 3 premières tables cette fois-ci et là, même résultat, la requête a été QUASI IMMEDIATE !!!
Je commence à me dire que c'est ACCESS QUI DOIT ETRE LIMITE !!!

Je manipule ACCESS depuis plusieurs années, il n'est pas si évident de le mettre à genoux, si ton modèle de données est bien organisé...

dois-je dans chacune des tables indexer les 3 champs communs ?
C'est ce que je propose depuis le début : indexer toutes les colonnes qui sont dans les jointures...

dois-je créer une indexation (clé primaire) sur les 3 champs de chacune de ces tables ?
Une clé primaire est automatiquement indexée, mais mettre un index sur une colonne n'en fait pas une clé primaire...
0
cantag > blux Messages postés 27993 Date d'inscription   Statut Modérateur Dernière intervention  
 
Bonjour et désolé pour le retard ...

Je viens d'indexer les 3 champs utilisés pour la jointure de chacune des 21 tables et malheureusement, j'ai toujours les mêmes problèmes !!!
Je commence à désespérer ...

Cette base de données fait environ 4Mo, donc pas très volumineuse, puis-je te l'envoyer de façon à ce que tu puisses lancer la requête telle quelle et lever ainsi le doute sur ma version d'ACCESS ?

D'avance merci
Georges
0
blux Messages postés 27993 Date d'inscription   Statut Modérateur Dernière intervention   3 367 > cantag
 
tu peux toujours, envoie-moi un MP que je te donne mon mail...
0