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

Requêtes et SQL. Discussion :

Lenteur dans l'exécution de ma requête [AC-2016]


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2012
    Messages : 195
    Points : 83
    Points
    83
    Par défaut Lenteur dans l'exécution de ma requête
    Bonsoir les amis.
    J'ai un problème. Quand j'exécute ma requête sa peux prendre au moins 3 minutes avant de s'ouvrir.
    C'est un logiciel pour créer les factures.
    Voici comment je l'ai créé. J'ai utilise les requêtes de sélection de Access. Pour les totaux (comme le totals facture. Total payer et reste à payer) des factures j'ai les fais en fonction avec SQL.
    Quand je réuni tout dans une requête de sélection c'est prendre du temps avec de s'ouvrir.
    J'ai une autre question. Avec les requêtes des Access et les requêtes en SQL quelle est le plus rapide ou le plus conseiller.
    Merci d'avance j'attends vos réponces avec impatience.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Bonjour.

    Cela aiderai si tu poster le SQL de la requête en question mais je vais te donner les coupables les plus fréquents : les fonctions de dommaine DFirst(), DSum, …

    Elles sont particulièrement inefficaces (même si super pratiques souvent).

    Si tu fais des totaux avec DSum, tu voudras sans doute faire une requête qui te donne tes totaux et ensuite la mettre en jointure avec celles qui te sert à afficher ces même totaux. C'est généralement significativement plus rapide car Access ne fait les calculs qu'une seule fois au lieu de recommencer à chaque enregistrement.

    Sinon les fonctions VBA peuvent aussi ralentir l'exécution d'une requête.

    Enfin pour ce qui est de la différence entre requête enregistrée et requête "dans le code", en théorie les requêtes enregistrées sont plus rapides car Access peut les optimiser. Pour le SQL, qui est soumis à chaque fois, Access doit refaire les calculs à chaque fois et ne peut pas le optimiser.

    En pratique je n'ai pas vu de différences vraiment significatives, surtout avec les PC d'aujourd'hui qui ont généralement 10 x plus de puissance que ce dont l'utilisateur a besoin.

    Personnellement je préfère les requêtes enregistrées parce que :

    • on les voit, donc on sait qu'elles existent. Pas besoin de les chercher dans quelque millier de lignes de code VBA.
    • On peut facilement voir les résultats de manière autonome. Pas besoin de "rouler" un code pour voir si le résultat et correct.
    • Je n'aime pas écrire de SQL à la main sans un éditeur digne de ce nom (ex : celui de Ms SQL Server ou de Oracle) avec une coloration syntaxique, mise en forme, contrôle syntaxique, IntelliSense … Ça me rappelle trop les années 90. Pour moi c'est un peu comme revenir à la plume d'oie une fois qu'on a découvert le stylo à bille.
    • On peut faire une requête pour afficher les requêtes ce qui est bien pratique (même si pas très esthétique) pour répondre à des questions comme "Mais où ai-je bien pu modifier ce #*&?! (mettre ici votre juron préféré) de champ ?"
    • Avec les dernières versions d'Access, Access change les noms de champ ou de table dans le SQL pour toi quand tu décides de les renommer … et comme je fais assez souvent des inversions de lettre et autre erreur de frappe j'apprécie hautement.


    Bon je reconnais que quand on en a beaucoup ça peut devenir un peu le chaos.

    A+

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2012
    Messages : 195
    Points : 83
    Points
    83
    Par défaut
    Vraiment merci pour ta réponse. J'ai tout compris. Infiniment merci

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2012
    Messages : 195
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par Rayan1 Voir le message
    Vraiment merci pour ta réponse. J'ai tout compris. Infiniment merci
    Ce que je retiens 'est que les requêtes enregistrés sont plus rapide que les msql.
    Merci

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Bonjour.

    En théorie oui en pratique pas sûr.

    Par contre le SQL (enregistré ou dans le code) est plus rapide que les fonctions de domaines (DSum() et compagnie).

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lenteur dans l'exécution de la fonction RANG
    Par Rayan1 dans le forum VBA Access
    Réponses: 8
    Dernier message: 25/09/2018, 16h14
  2. Réponses: 0
    Dernier message: 24/02/2017, 10h32
  3. Erreur dans l'exécution d'une requête
    Par ouinih dans le forum SQL
    Réponses: 3
    Dernier message: 11/06/2008, 23h32
  4. [MySQL] problème dans le temps de l'exécution de la requête
    Par yosra72000 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/05/2007, 22h41
  5. Arrêt de l'exécution d'une requête MySQL dans DELPHI.
    Par joelmarc dans le forum Bases de données
    Réponses: 9
    Dernier message: 11/10/2004, 16h11

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