|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() |
Bonjour à tous
mes souvenirs de SQL étant loin j'ai un peu de mal sur les trucs complexes. J'ai 2 tables, "produits" et "sortis" qui ont une colonne commune produits.numero et sortis.num_mandat. Je voudrais connaitre le nombre de lignes qui sont dans ma table produits sans être dans ma table sortis. Merci d'avance de votre aide. Version MySql : 5.0.27 Version PhpMyAdmin : 2.8.2.4
__________________
Le contenu est roi, optimisé il est empereur... Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent. http://www.tethis-interactive.com |
|
|
00
|
|
|
#2 | ||
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
bonjour
c'est a dire le nombre de produits qui n'ont jamais ete achetes (sortis) ? Code :
|
||
|
|
00
|
|
|
#3 | ||
|
Membre confirmé
![]() |
C'est exactement ça
J'ai réécris je m'étais gouré dans le nom des tables ^^ Code :
Pour info j'ai environ 30 000 lignes dans chaque table.
__________________
Le contenu est roi, optimisé il est empereur... Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent. http://www.tethis-interactive.com |
||
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
bonjour,
Que veux dire tourne dans le vide ? Avez-vous un index sur numero et num_mendat ? |
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() |
Quand je dit tourne dans le vide c'est que je lance ma requête dans PhpMyAdmin et la ma page charge longtemps avant de m'afficher une page blanche...
Sur le monitoring serveur, Mysql est monté très très haut en charge, jusqu'à 100% du CPU et redescend tres doucement. Les tables produit et sortis ont toutes deux un identifiant unique. Qui est la colonne numero pour la table produit et la colonne num_mandat pour la table sorti.
__________________
Le contenu est roi, optimisé il est empereur... Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent. http://www.tethis-interactive.com |
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
sont-ils indexés ?
Peut-etre sont-ils des primary key ? |
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() |
Oui ce sont des Primary Key
__________________
Le contenu est roi, optimisé il est empereur... Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent. http://www.tethis-interactive.com |
|
|
00
|
|
|
#8 |
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
ca veut dire qu'il n'y a pas de jointure entre les 2 tables ? (de colonnes communes)
peut etre bien de donner la structure des 2 tables |
|
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Salut !
Je sais pas trop comment MySQL optimise... le must serait que tu nous donnes le plan d'exécution Cela dit j'imagine bien MySQL avoir du mal avec les jointures externes (comment ça je suis médisant ? Tu peux peut être tenter : Code :
__________________
(c'est ma photo) Paku, Paku ! Pour les jeunes incultes : non, je ne suis pas un pokémon... Le pacblog : http://pacmann.over-blog.com/ |
||
|
00
|
|
|
#10 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
que donne cette requête ? Code SQL :
|
||
|
|
00
|
|
|
#11 | |
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
aieeeuuuu et pacmann,
cette phrase me laisse perplexe : Citation:
peux tu preciser la structure des tables
|
|
|
|
00
|
|
|
#12 |
|
Membre confirmé
![]() |
Oui oui messieurs me tapez pas ^^ j'ai bien lu tous vos messages mais suis un peu débordé avec plusieurs projets de front
![]() Je reviens vers vous dès que j'ai 5 minutes y'a pas urgence Je vous enverrai un stagiaire que je vais mettre sur l'affaire Je connais pas par coeur la structure de la base elle nous est fournie par un prestataire externe
__________________
Le contenu est roi, optimisé il est empereur... Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent. http://www.tethis-interactive.com |
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Preferez la solution de pacmann.
En effet, vous beneficierez de l'utilisation des indexes, d'une volumétrie moindre que par la jointure externe. dans votre table sortie, vous devez avoir une colonne faisant la relation avec le produit, c'est avec celle ci que vous devez jouer pour votre requete. Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#14 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
|
|
|
00
|
|
|
#15 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
sur la non utilisation d'index sur des colonnes NULL ??
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Normalement, on n'a pas de problème d'indexation de NULL, puisque la colonne est sensée être PK
Après Punkoff, le seul moyen de savoir ce qui se passe, c'est d'avoir les plans d'exécution pour les différentes solutions
__________________
(c'est ma photo) Paku, Paku ! Pour les jeunes incultes : non, je ne suis pas un pokémon... Le pacblog : http://pacmann.over-blog.com/ |
|
00
|
|
|
#17 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
pas avec l'utilisation de la jointure externe...
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#18 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
Pouvez-vous developper ?
En particulier avec quel SGBD vous testez ceci. Car perso sous oracle j'ai 3 plans d'executions identiques en faisant : - left outer join - not in - not exists Et il me semble que sous db2 c'est pareil (je ne peux pas vérifier pour l'instant) |
|
|
00
|
|
|
#19 |
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Oui mais de toutes façons, tu as les NULL après exécution de la jointure externe. (En gros, ce n'est pas les NULL qui t'empêchent d'utiliser l'index, c'est le fait que tu aies déjà exécuté la jointure...)
Si tu veux réaliser la jointure externe, tu peux faire : - Prendre les lignes de la table A - Chercher si la clef de jointure existe dans l'index si oui : retourner ligne si non : retourner null (Après, je sais pas si MySQL est capable de faire ça...) Et comme dit Punkoff, dans d'autres SGBD il est avéré que le même plan peut être utilisé en détectant la recherche de null (NESTED LOOP ANTI ou un truc du genre)
__________________
(c'est ma photo) Paku, Paku ! Pour les jeunes incultes : non, je ne suis pas un pokémon... Le pacblog : http://pacmann.over-blog.com/ |
|
00
|
|
|
#20 | |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Citation:
Il me semble qu'a partir de la V10 d'Oracle, l'optimisateur reecrit le not in en not exists ... a confirmer. Vous pouvez aussi aller faire un tour ici , ou bien la.
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com