Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/01/2012, 14h35   #1
Membre à l'essai
 
Inscription : janvier 2006
Messages : 120
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 120
Points : 24
Points : 24
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 :
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?
Jarod51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 15h24   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
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 :
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/01/2012, 15h39   #3
Membre à l'essai
 
Inscription : janvier 2006
Messages : 120
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 120
Points : 24
Points : 24
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
Jarod51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 15h44   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/01/2012, 15h55   #5
Membre à l'essai
 
Inscription : janvier 2006
Messages : 120
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 120
Points : 24
Points : 24
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.
Jarod51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 16h02   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 16h06   #7
Membre à l'essai
 
Inscription : janvier 2006
Messages : 120
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 120
Points : 24
Points : 24
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
Jarod51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h12.


 
 
 
 
Partenaires

Hébergement Web