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 :

requete QBE / requete code : rapidité et index


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 402
    Points : 346
    Points
    346
    Par défaut requete QBE / requete code : rapidité et index
    Bonjour

    selon vous, y a t'il une différence de rapidité entre une requete (sans paramètre) QBE et la même requete executé par le code ?
    Si oui, pourquoi?
    Comment utiliser les indexs pour les selections selon les deux méthodes avec access?

    merci

  2. #2
    Membre actif
    Avatar de Trini
    Homme Profil pro
    Dresseur de puce
    Inscrit en
    Juillet 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dresseur de puce

    Informations forums :
    Inscription : Juillet 2005
    Messages : 189
    Points : 264
    Points
    264

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 402
    Points : 346
    Points
    346
    Par défaut
    Si la requête utilise des critères basés sur des champs indexés, alors mieux vaut passer par une requete et OpenQuery.

    Docmd.Runsql ne fait qu'exécuter une instruction sql tandis que OpenQuery exécute une requête enregistrée (bénéficiant de la technologie Rushmore). Cette technologie est notamment basée sur l'usage des index pour la recherche d'un enregistrement. Ces index sont stockés dans une structure cachée.
    Lorsque la requête s'exécute, si les critères sont posés sur des champs indexés, la requête peut être optimisée car la recherche se fait sur la structure des index et non directement sur la table.
    ca manque de certitude.

    La requete peut etre
    d'où ma question.

  4. #4
    Membre confirmé
    Avatar de Petogaz
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    479
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 479
    Points : 580
    Points
    580
    Par défaut
    salut,

    cela va dépendre aussi dans tous les cas du volume de données traitées et des champs (champs indexés) sur lesquels va être basé ta recherche. enfin le mieux est de tester non ? ça te donnera la certitude que tu recherches.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 402
    Points : 346
    Points
    346
    Par défaut
    oui bien sur, le test sera le plus approprié pour mon cas.

    Mais bon. On fait et on constate.
    Je préfèrerais agir selon les spécifications propres, plutot que de laisser des suppositions.

    On reste dans l'a peu près.
    Du coup, selon la config, celà est performant, sinon l'inverse.

  6. #6
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut


    Tu poses une question, on te donne la réponse. Les requêtes enregistrées bénéficient de l'effet rushmore qui optimise l'utilisation des index, donc les temps de traitement. Il est donc clair qu'une requête enregistrée est plus rapide qu'une requête codée dans le VBA.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 402
    Points : 346
    Points
    346
    Par défaut
    très bien
    dans ce cas, il serait judicieux de modifier le
    Lorsque la requête s'exécute, si les critères sont posés sur des champs indexés, la requête peut être optimisée car la recherche se fait sur la structure des index et non directement sur la table.
    Par un
    Lorsque la requête s'exécute, si les critères sont posés sur des champs indexés, la requête SERA optimisée car la recherche se fait sur la structure des index et non directement sur la table.
    Sinon on peut se poser la question du
    Peut être, peut être pas?

    Voila après tu peux donner des conseils à certains, en affirmant que cette technique est préconisée par rapport à l'autre. (ex: un prof)
    car une réponse, qui induit, ca dépend des cas, contribue à dire qu'Access est un outil qui parfois est hasardeux, donc non pro.
    Certains penseront que je chipote. Mais c'est justement après avoir vu cette remarque dans la FAQ que j'ai posté.

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,
    Citation Envoyé par LostIN
    [...] une réponse, qui induit, ca dépend des cas, contribue à dire qu'Access est un outil qui parfois est hasardeux, donc non pro.
    Il ne faut pas tout mélanger: le fonctionnement du moteur de bases de données Jet n'a rien à voir avec le hasard.

    Ici, ce qui fait défaut ce sont des "certitudes", qui pourraient se matérialiser, par exemple, sous forme de spécifications.
    Ou encore, avec un livre qui traiterait du sujet...

    En voici justement un, disponible en librairie (?) et aussi sous forme électronique dans la version MSDN fournie avec le pack développeur d'Office 2000 (ODE) et probablement avec les versions suivantes (?):
    "Microsoft Jet Database Engine Programmer’s Guide".
    Auteurs: Dan Haught et Jim Ferguson

    Citation Envoyé par LostIN
    [...] une réponse, qui induit, ca dépend des cas, contribue à dire qu'Access est un outil qui parfois est hasardeux, donc non pro.
    Dans tous les cas, le contenu de la citation ci-dessus est "non pro" .


    Pour en revenir à ce livre écrit par les concepteurs de Jet et à cet élément de la FAQ Access sur développez.com.

    Microsoft Jet Query Engine Overview

    The Microsoft Jet database engine contains a sophisticated query processor that’s responsible for query execution. There is, however, much more to the query engine than just a query processor. The query engine also contains a sophisticated query optimizer that takes any given query as its input and determines the fastest join strategy for executing that query.

    A query may be internally optimized to yield a more efficient join strategy, but this is all done without intervention from the user. The goal of the query engine is to take any query, no matter how poorly structured, and execute that query in the most efficient manner.
    En fait, toutes les requêtes soumises à Jet font l'objet d'une analyse et d'une optimisation: la phase d'analyse/optimisation peut être assez complexe et prendre du temps, mais a été optimisée (depuis Access 97 qui utilise Jet 3.5).

    Faster Generation of Query Plans

    In Microsoft Jet 3.5, the query plan generation process has been optimized to improve performance of temporary queries (for example, dbs.Execute SQL statement) and frequent modifications of stored queries in code.
    Mais, dans le cas d'une requête stockée (alias requête Access), le résultat de cette analyse/optimisation est conservé avec la requête, pour être utilisé immédiatement à la prochaine exécution de cette requête: c'est ici que Jet gagne du temps.

    En revanche, pour une requête créée à l'exécution, cette phase d'analyse/optimisation doit toujours être réalisée avant l'exécution.

    Voilà, juste une petite contribution pour faire avancer notre savoir collectif .

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 402
    Points : 346
    Points
    346
    Par défaut
    merci de cette contribution

    car la faq n'est pas parole d'évangile.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 402
    Points : 346
    Points
    346
    Par défaut
    dans le même style

    juste par curiosité car je ne fais et ne ferais jamais de macro.
    Est ce qu'une macro est plus performante que son équivalent en code?

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Citation Envoyé par LostIN
    car la faq n'est pas parole d'évangile.
    Un "Saint Thomas d'Access", qui ne croit que ce qu'il voit , nous propose un benchmark sur le sujet...

    Article: Do Stored Queries Increase the Speed of Access Queries?
    Auteur: Marcus Tucker

    http://www.15seconds.com/issue/020919.htm

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 402
    Points : 346
    Points
    346
    Par défaut
    un saint thomas d'access, je vais devoir changer de pseudo!!
    si j'ai le temps, alors oui.

Discussions similaires

  1. [Requete] Squelette du code d'une FAQ en Java
    Par Crowell dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 09/05/2007, 10h58
  2. Requete insert dans code
    Par laurent.w dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 05/02/2007, 12h13
  3. Lancer une requête par du code
    Par Kyrha dans le forum Access
    Réponses: 8
    Dernier message: 30/05/2006, 09h10
  4. Paramètre de requete par le code pour état
    Par electrosat03 dans le forum Access
    Réponses: 6
    Dernier message: 17/03/2006, 17h39
  5. [MySQL] Probleme requete sql et code html
    Par needles94000 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/03/2006, 17h38

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