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 MySQL Discussion :

Exécution trop longue d'une requête


Sujet :

Requêtes MySQL

  1. #1
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut Exécution trop longue d'une requête
    Bonjour,

    J'ai 2 tables :

    maj_compte_bancaire_1 qui fait 1700 enregistrements
    t_tiers qui fait 21000 enregistrements

    J'ai fait une requête pour créer une 3ème table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM maj_compte_bancaire_1 LEFT OUTER JOIN t_tiers ON tiers_nom=compte_banque_nom AND tiers_adr1=compte_banque_adr1 AND tiers_adr2=compte_banque_adr2 order by maj_compte_bancaire_1.id_maj
    J'ai l'impression qu'il part chercher dans les tiers tous les tiers qui ont la même adresse que le compte. Moi, il me suffit de la 1ère adresse du tiers, après je n'ai plus besoin de lire le reste des tiers.

    Je dois pouvoir lui dire "arrêtes toi dès que tu as trouvé un tiers"

    C'est possible ?

    Merci d'avance
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  2. #2
    Membre régulier Avatar de Yanos
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 160
    Points : 121
    Points
    121
    Par défaut
    Si je ne me trompe pas si tu insère un "count=1" ou un "max" au bon endroit tu dois pouvoir prendre le premier qui vient.

    Je ne me rappel plus si il y a un Rownum comme sous oracle (c'est pratique )

    Edit: par exemple
    SELECT MIN(ID) FROM TABLE WHERE {ma_condition}

    doit faire ce que tu veux mais de là à voir si c'est optimisé je te laisse tester

  3. #3
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Salut,

    Peut être simplement en utilisant un LIMIT ?

    Règle n°1 du forum francophone : Parler le français...
    Pas de question technique par MP, le forum est fait pour çà, merci.

  4. #4
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Citation Envoyé par Huntress
    Salut,

    Peut être simplement en utilisant un LIMIT ?
    Je ne vois pas comment utiliser un LIMIT sur ma requête, car sur mon select je veux tout, c'est sur ma jointure que je ne veux que le 1er trouvé.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  5. #5
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Je ne vois pas comment utiliser un LIMIT sur ma requête
    Peut-être en remplaçant la jointure par une requête imbriquée avec un "LIMIT 1", à condition qu'on y ait droit dans une sous-requête.

    'ai l'impression qu'il part chercher dans les tiers tous les tiers qui ont la même adresse que le compte.
    En fait tous ceux avec même adresse et nom.

    Je dois pouvoir lui dire "arrêtes toi dès que tu as trouvé un tiers"
    C'est pour quoi faire ? Si c'est pour vérifier l'existence d'au moins un tiers il y a d'autres méthodes comme "EXISTS".

    Autre idée, un truc comme "GROUP BY maj_compte_bancaire_1.id". Le résultat renverra un tiers sans qu'on sache lequel, mais je ne suis pas certains que pour une ligne donnée les différentes colonnes proviennent du même tiers (c'est en théorie un truc à ne pas faire, afficher des champs nom constants d'un "group by").

  6. #6
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Merci, il me faut les infos de la table jointe.

    Bon, j'ai fait 2 requêtes séparées

    Une fois que j'ai le résultat de la 1ère, je vais exécuter la seconde.

    Dans mon contexte, ce n'est pas trop grave de faire comme cela, c'est un programme de tansfert de données pour passer d'une version à une autre d'un soft. Donc une utilisation unique.

    Merci, pour votre aide, je vois que ce n'est pas simple.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

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

Discussions similaires

  1. Chaine trop longue dans une requête
    Par devdev dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 20/03/2010, 17h53
  2. [Requête SQL]Trop longue pour une ligne
    Par jbulysse dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/07/2008, 14h27
  3. CGI exécution trop longue
    Par crochepatte dans le forum Apache
    Réponses: 3
    Dernier message: 18/08/2006, 15h02
  4. Sous-requête excutée plusieurs fois dans une requête
    Par sheridan31 dans le forum Oracle
    Réponses: 8
    Dernier message: 03/07/2006, 16h18
  5. Exécution tres Long d'une requête de Selection
    Par touhami dans le forum SQL
    Réponses: 10
    Dernier message: 09/03/2006, 09h34

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