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 :

problème requete non correspondance


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut problème requete non correspondance
    Bonjour à tous,

    Je me permets de poster sur le forum car j'ai un problème avec ma requête de non correspondance sous Mysql qui me renvoi rien quand je l'execute ou me renvoi un Fatal error: Maximum execution time of 30 seconds exceeded .

    La requête prend énormément de temps sous MySQL à s'exécuter alors que sous ACCESS, elle prend même pas quelques secondes.

    en fait, je voudrais afficher les lignes de la table import_o qui ne sont pas contenu dans la table import_m.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT import_o.specnum
    FROM import_o LEFT JOIN import_m ON import_o.specnum = import_m.specnum
    WHERE (((import_m.specnum) Is Null))
    Je ne vois pas où est mon erreur?

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Combien de lignes dans les tables ?

    Les colonnes présentes dans la condition de jointure sont-elles indexées ?

    Supprime les parenthèses inutiles dans le WHERE. Mauvaise habitude d'Access à perdre !

    Sinon tu peux essayer aussi avec NOT EXISTS. En principe, c'est une peu plus performant. Ce qui n'empêche pas d'indexer les colonnes quand même !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT import_o.specnum
    FROM import_o 
    WHERE NOT EXISTS 
    (
    	SELECT *
    	FROM import_m
    	WHERE import_o.specnum = import_m.specnum
    )
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    Salut CinePhil,

    content de te lire .

    import_o : 38749 lignes
    import_m : 19303 lignes

    non je n'ai pas indexé mes colonnes .

    Je vais suivre ton conseil et indexer mes colonnes et voir si le temps d’exécution s'améliore.

    Juste une petite question sur l'index, si j'indexe que la colonne specnum est ce que c'est bon ou bien je dois indexer toutes les colonnes des 2 tables ?

    j'avais fais le test également avec NOT EXISTS mais ça pédale aussi

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Jarod51 Voir le message
    Juste une petite question sur l'index, si j'indexe que la colonne specnum est ce que c'est bon ou bien je dois indexer toutes les colonnes des 2 tables ?
    Pour cette requête, indexer specnum dans les deux table sera suffisant.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    Merci pour ta réponse CinePhil

    Juste une dernière petite question, qui peut paraître bête, peut on indexer une colonne sur une table temporaire ? Je pense faire l'opération de non correspondance en passant par des temporary table.

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Jarod51 Voir le message
    peut on indexer une colonne sur une table temporaire ? Je pense faire l'opération de non correspondance en passant par des temporary table.
    Pas sûr. Essaie.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 62
    Points
    62
    Par défaut
    J'ai testé d'indexer specnum sur les deux tables temporaires ça marche . Le temps d'execution est nettement plus rapide depuis l'indexation. Super !

    Merci encore pour l'aide

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

Discussions similaires

  1. requete non correspondance
    Par NELAIN dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/01/2009, 09h48
  2. requete non correspondance
    Par jedijul dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2007, 15h54
  3. Création d'une requête de non correspondance
    Par angélique dans le forum Access
    Réponses: 2
    Dernier message: 18/07/2006, 16h50
  4. Réponses: 1
    Dernier message: 28/06/2006, 13h31
  5. Requete de non-correspondance
    Par nassu dans le forum Access
    Réponses: 2
    Dernier message: 10/05/2006, 19h28

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