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

Langage SQL Discussion :

jointure extrêmement longue


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Par défaut jointure extrêmement longue
    Bonjour,

    J'exécute une requête SQL et le résultat prend quelques 50,144 secondes à s'exécuter ! Vous conviendrez avec moi, que c'est long, très long, trop long !

    Le problème n'est que sur cette requête ... toutes les autres requêtes que j'effectue ont un résultat généré rapidement; quelques secondes tout au plus

    La requête SQL est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT rubriques.id_rubriques, rubriques.fr FROM rubriques WHERE rubriques.id_rubriques IN (SELECT rubriques.id_rubriques FROM rubriques WHERE rubriques.fr LIKE '%confiture%' UNION DISTINCT SELECT mots_fr.id_rubriques FROM mots_fr WHERE mots_fr.fr LIKE '%confiture%' )
    Quelques explications sur cette requête :

    Elle effectue une jointure entre la table rubriques (1763 enregistrements) et la table mots_fr (3917 enregistrements) où il retire les id_rubriques distinct. A partir de cette liste d'id_rubriques, il va voir leur nom dans la table rubriques (1763 enregistrements).

    Elle génère le résultat suivant :

    id_rubriques : 320
    fr : confitures, gelées & sirops - fabr. & gros...
    Pour conclure : Comment puis je faire en sorte que le résultat soit généré plus rapidement ?

    D'avance merci pour vos réponses.



    xenos

  2. #2
    Membre chevronné Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Par défaut
    Bonjour,
    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT rubriques.id_rubriques, rubriques.fr 
    FROM rubriques 
    WHERE rubriques.fr LIKE '%confiture%'
    OR EXISTS (SELECT 1 
    		FROM mots_fr 
    		WHERE mots_fr.fr LIKE '%confiture%'
    		AND mots_fr.id_rubriques = rubriques.id_rubriques)

  3. #3
    Membre éclairé
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Par défaut
    Merci de ta réponse chrifo.

    Je passe de 50 secondes en moyenne à 32 secondes ! Ce qui fait tout de même une économie de 36% ! :p

    J'ai encore réussi à réduire le temps à moins de 0,5 seconde en moyenne en créant des index sur mes tables !

    Le problème est donc très largement résolu.

    Bon développement à tous.



    xenos

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

Discussions similaires

  1. Jointure qui ne renvoie pas tous les enregistrements
    Par rayonx dans le forum Langage SQL
    Réponses: 12
    Dernier message: 19/07/2024, 10h33
  2. [MySQL] Jointure top longue ?
    Par Awery dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 11/09/2012, 12h55
  3. jointure trop longue à être exécutée
    Par moimemessssssssss dans le forum VBA Access
    Réponses: 4
    Dernier message: 21/12/2008, 16h12
  4. Jointure très longue (49 minutes)
    Par Daxey dans le forum Débuter
    Réponses: 7
    Dernier message: 23/08/2008, 21h19
  5. Recherche extrêmement longue
    Par mxh77 dans le forum 4D
    Réponses: 9
    Dernier message: 18/02/2007, 18h39

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