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 :

Requête très lente [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut Requête très lente
    Bonjour et Re pour ceux qui m'ont vu sur le post précédent


    Mon bidouillage m'a donné 4 requêtes dont certaines sonttrès lentes ce qui fait ralentie mon programme lorsque je fais appel à elles; voici les codes :
    R_1_N°Lot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT R_0_N°Lot.Zone, R_0_N°Lot.Emplacement, R_0_N°Lot.[Nom produit], R_0_N°Lot.[N° Lot], R_0_N°Lot.Code
    FROM R_0_N°Lot INNER JOIN R_0_N°Lot AS R_0_N°Lot_1 ON R_0_N°Lot.Code = R_0_N°Lot_1.Code
    WHERE (((R_0_N°Lot.Remarque) Is Not Null) AND ((R_0_N°Lot_1.Remarque) Is Null));
    Cette requête me permet d'identifier les lignes pour lesquelles j'ai des informations dans le champs Remarque et ayant un code identique à une autre ligne n'ayant pas d'information dans le champs Remarque.

    R_2_N°Lot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT R_0_N°Lot.Zone, R_0_N°Lot.Emplacement, R_0_N°Lot.[Nom produit], R_0_N°Lot.[N° Lot], R_0_N°Lot.Code, R_0_N°Lot.Remarque
    FROM R_0_N°Lot;
    Elle m'affiche la table initiale

    R_3_N°Lot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT R_2_N°Lot.Zone, R_2_N°Lot.Emplacement, R_2_N°Lot.[Nom produit], R_2_N°Lot.[N° Lot], R_2_N°Lot.Code, R_2_N°Lot.Remarque
    FROM R_2_N°Lot LEFT JOIN R_1_N°Lot ON (R_2_N°Lot.Code = R_1_N°Lot.Code) AND (R_2_N°Lot.[N° Lot] = R_1_N°Lot.[N° Lot]) AND (R_2_N°Lot.[Nom produit] = R_1_N°Lot.[Nom produit]) AND (R_2_N°Lot.Emplacement = R_1_N°Lot.Emplacement) AND (R_2_N°Lot.Zone = R_1_N°Lot.Zone)
    WHERE (((R_1_N°Lot.Code) Is Null));
    Elle croise en jointure externe (oh qu'est ce que je me la pète sur ce coup là ) R_1 et R_2 pour supprimer les lignes de R_1 sur la table initiale
    C'est a priori cette requête qui met plus de temps à se calculer

    R_4_N°Lot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT R_3_N°Lot.Zone, R_3_N°Lot.Emplacement, R_3_N°Lot.[Nom produit], R_3_N°Lot.[N° Lot], R_3_N°Lot.Code, R_3_N°Lot.Remarque, IIf([remarque] Is Not Null,([N° Lot] & " - A vérifier"),[N° Lot]) AS Lot
    FROM R_3_N°Lot;
    Elle me permet d'avoir l'information que le lot est à vérifier lorsque Remarque a une information


    Par avance merci

    Nini

    P.S. : f-leb et Maxence : il est interdire de se moquer

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 777
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 777
    Points : 58 179
    Points
    58 179
    Billets dans le blog
    42
    Par défaut
    Re,

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    LEFT JOIN R_1_N°Lot 
    ON (R_2_N°Lot.Code = R_1_N°Lot.Code) 
      AND (R_2_N°Lot.[N° Lot] = R_1_N°Lot.[N° Lot]) 
        AND (R_2_N°Lot.[Nom produit] = R_1_N°Lot.[Nom produit]) 
          AND (R_2_N°Lot.Emplacement = R_1_N°Lot.Emplacement)
            AND (R_2_N°Lot.Zone = R_1_N°Lot.Zone)
    Une jointure sur 5 champs, ça commence à faire beaucoup aussi...La jointure sur le seul champ [code] ne suffit pas ?

    Citation Envoyé par liop49 Voir le message
    f-leb et Maxence : il est interdire de se moquer
    <--f-leb et Maxence

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Bonjour,

    J'ai vu et c'est moche de ricaner
    Citation Envoyé par f-leb Voir le message

    <--f-leb et Maxence
    Bon, c'est vrai que j'y suis allé un peu fort avec mes 5 jointures externes !!!
    Après essai, il en faut uniquement deux : Lot et Code

    La requête est certes un peu plus rapide mais ca rame encore un peu.
    Maintenant, si le code ne peut pas être optimisé, je resterai comme cà.

    Merci

    Nini

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    C'est bon !!!


    Comme la requête avec les jointures est à réaliser une fois par jour, j'ai créée une macro qui copie les résultats de la requête dans une table et ainsi je récupère les données de la table et non sur la requête qui tourne lentement.

    Parfait

    Nini

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

Discussions similaires

  1. Requête trés lente > 20min
    Par ahmed. dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/01/2013, 17h41
  2. Requête trés lente
    Par mercure07 dans le forum SQL
    Réponses: 22
    Dernier message: 29/03/2012, 18h46
  3. [AC-2007] Requête très lente depuis table externe en BD SQLServer2008
    Par alfhcg dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 28/10/2011, 00h19
  4. Requête très lente
    Par Korben-Dallas dans le forum Requêtes
    Réponses: 10
    Dernier message: 20/07/2011, 14h07
  5. Requêtes très lentes malgré peu de données
    Par The zxeno prophet dans le forum Requêtes
    Réponses: 8
    Dernier message: 12/01/2011, 14h09

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