IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Optimisation ouverture de Requetes SQL en VBA


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 28
    Points : 22
    Points
    22
    Par défaut Optimisation ouverture de Requetes SQL en VBA
    Bonjour à tous,

    Je travaille actuellement sur une macro qui met environ 25 min, et environ 15 min sont consacrés à l'ouverture d'une requête SQL assez longue car elle se situent en plein coeur de plusieurs boucles :/

    Voici la ligne qui met 1 min à s'executer:
    Nom : Capture.PNG
Affichages : 353
Taille : 2,0 Ko

    Voici le détail de la fonction "CreateQueryUnionALL":
    Nom : Capture.PNG
Affichages : 645
Taille : 19,8 Ko

    J'ai entendu parler de tables temporaires mais je ne vois pas trop comment je pourrais les intégrer ici et comment elles fonctionnent exactement.

    Avez-vous une solution ou des conseils à me donner pour améliorer ma macro svp ?

    Merci par avance pour votre aide,
    Rainmax

  2. #2
    Membre du Club
    Homme Profil pro
    Consultant
    Inscrit en
    Novembre 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 43
    Points : 69
    Points
    69
    Par défaut Optimisation de SQL
    Salut,

    Ce n'est pas vraiment la requête qui est imbriqué : c'est juste la construction de la requête ... et ce n'est pas une boucle énorme.

    Mon avis est que si tu lances la requête fabriquée directement (en récupérant la chaîne depuis le debuggueur, par exemple) tu obtiendras le même temps de réponse.

    Ce qui est important et que tu n'indiques pas est la volumétrie : combien de lignes dans ta table UnionQueryAll ? La répartition est aussi importante.

    Dans un premier temps, il faudrait s'assurer qu'il y a un index sur les champs Activity, AsOf et Indicators.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    En fait, si j'ouvre la query dans la base Access j'ai le même problème dans le sens qu'il faut environ 2 min à Access pour qu'il m'affiche le résultat de la vue. La requête est très complexe car elle se base sur plusieurs Tables.

    La requête fait 20 558 lignes, mais j'ai déjà ouvert des requêtes plus volumineuses en VBA sans avoir ce soucis.

    Non il n'y a pas d'Index sur les champs Activity, AsOf et Indicators. Voici à quoi ressemble la table:
    Nom : Capture.PNG
Affichages : 350
Taille : 11,2 Ko

    Merci par avance de votre aide,
    Rainmax

  4. #4
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut Optimisation de SQL
    est-ce que tu as le même problème après compactage de la db ? quelle est la capacité en mémoire de ta machine ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Comment pourrais-je avoir ces informations svp ?

  6. #6
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 088
    Points : 5 204
    Points
    5 204
    Par défaut
    Bonjour

    La requete constituée par la fonction revient à créer une "grosse vue" pour ensuite n'en utiliser qu'une "petite partie" dans le select principal
    En plus de créer des index sur les champs du where comme le suggère justement la grenouille, il est possible de descendre le where à l'étage d'en dessous, c'est à dire de filtrer au niveau de la création de unionallquery qui deviendrait "unionwherequery"
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

Discussions similaires

  1. Requete sql via vba
    Par Echizen1 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 10/12/2006, 16h13
  2. Requete SQL sous VBA
    Par Sam 069 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 27/07/2006, 11h04
  3. Format dans Requete SQL sous VBA
    Par Sam 069 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/07/2006, 12h09
  4. PB traduction requete sql vers vba
    Par stan314 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 28/05/2006, 17h27
  5. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo