|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
En attente de confirmation mail
Inscription : octobre 2002 Messages : 347 ![]() |
Bonjour,
j'ai toujours utilisé des produits cartesiens pour faire mes jointures. Là je suis face à un gros problème de ralentissement/performance dans un jeu de bcp de données et je me demande en utilisant des INNER JOIN je n'y gagnerai pas en vitesse... qu'en pensez-vous ? est-ce qu'une INNER JOIN va toujours plus vite qu'un produit cartésien sous mysql ? |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 276 ![]() |
Salut,
Produit cartésien pour moi ça veut dire pas de jointure entre 2 tables. A mon avis tu veux plutôt parler de jointures non normalisées, non ? Je pense pas que la syntaxe normalisée ou non est vraiment une influence sur les perfs. A mon avis vérifie d'abord tes indexes et fait des explain sur les requêtes problématiques. |
|
|
00
|
|
|
#3 | |||
|
Expert Confirmé
![]() ![]() |
Bonjour,
Citation:
Les jointures non normalisées ne sont qu'une selection sur un produit cartésien. Citation:
Citation:
@USA Mike : Peut-tu nous montrer ton script de création et la requête éxécuté ?
__________________
http://alaindefrance.wordpress.com - http://www.alain-defrance.com Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1 Project Lead eXo Social Java Black Belt - Java Black Belt Coach |
|||
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 276 ![]() |
Salut kazou
Citation:
Pour moi il n'y a produit cartésien que dans le cas sans jointure comme : D'ailleurs sqlpro dit ici : Citation:
|
||
|
|
00
|
|
|
#5 | ||||
|
Expert Confirmé
![]() ![]() |
A mon sens une jointure est le fait de faire corresponder deux enregistrement d'enssemble différents.
Les moyens utilisés importent peu, dans ce cas l'utilisation de la syntaxe avec JOIN permet d'expliciter la jointure alors que passer par un produit cartésien (grâce au FROM multiple) puis d'effectuer une selection pour projeter que des informations qui correspondent conduit souvent à avoir une requête peu explicite où l'on ne sais plus ce qui est critère de jointure ou simple selection. Bien évidement ce n'est qu'une histoire de terminologie mais les deux écritures suivant sont des jointures et totalement équivalentes : Code :
Code :
En effet WHERE devrait uniquement servir à définir des critère de selection alors que ON sert uniquement a définir des critères de jointure or dans la première requête, le WHERE définit un critère de jointure. Bien sûr comme dans beaucoup de domaines c'est surtout une question de point de vue, certains irons dans mon sens d'autres non
__________________
http://alaindefrance.wordpress.com - http://www.alain-defrance.com Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1 Project Lead eXo Social Java Black Belt - Java Black Belt Coach |
||||
|
00
|
|
|
#6 | ||
|
En attente de confirmation mail
Inscription : octobre 2002 Messages : 347 ![]() |
merci de vos réponses.
bon je vais essayer en rajoutant des indexs un peu partout..comme j'ai pas de limite de capacité disque, ça devrait pas poser de problème.. ps : oui j'entendais bien par produit cartésien, une jointure comme ça : Code :
|
||
|
|
00
|
|
|
#7 | |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 276 ![]() |
Ok kazou, t'as raison :
Citation:
) que l'on parlait également de produit cartésien dans ce cas comme le confirme fsmrel ici de façon très détaillée comme d'habitude Autant pour moi. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com