|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 20 ![]() |
Bonjour,
Voila j'ai : - une table INNODB T1 avec un champ IDCAT (entre autres) clé PRIMARY sur le champ IDCAT nbenreg = 150 - une table INNODB T2 avec un champ IDCAT (entre autres) clé PRIMARY sur le champ IDCAT nb enreg = 16 lorsque je fais l’instruction suivante (avec un EXPLAIN devant) : Code :
SELECT T1.*,T2.LIBCAT FROM T1, T2 WHERE T1.IDCAT=T2.IDCAT id select_type table type possible_keys key 1 SIMPLE T2 ALL PRIMARY NULL je ne comprends pas pourquoi la table T2 n'utilise pas sa clé primaire ? |
|
|
00
|
|
|
#2 | |
|
Membre confirmé
![]() |
Salut,
Donne nous un peu plus de détails (défs des tables, résultat exact du EXPLAIN)... De plus, la syntaxe pour les jointures est : Citation:
http://sqlpro.developpez.com/cours/sqlaz/jointures/
__________________
define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas. |
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 20 ![]() |
j'ai également essayé avec le INNER JOIN le résutat est le meme
résultat du explain id select_type table type possible_keys key ref rows Extra 1 SIMPLE T2 ALL PRIMARY NULL NULL 16 1 SIMPLE T1 ref IDCAT IDCAT 1 5 |
|
|
00
|
|
|
#4 | ||
![]() ![]() |
Citation:
Citation:
__________________
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 ! |
||
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : mai 2009 Messages : 15 ![]() |
Ton explain plan est normal:
1 SIMPLE T2 ALL PRIMARY NULL NULL 16 1 SIMPLE T1 ref IDCAT IDCAT 1 5 Comme tu n'as pas de condition sur ta table T1 ou T2, tu te tapes un fullscan. Essais par exemple un explain sur la même requête avec par exemple à la fin un: AND T1.IDCAT=200; ou AND T2.IDCAT=200; Tu verras que dans tes deux cas les index sont bien pris en compte. Si tu n'as pas cette condition le moteur est obligé de comparer tous les champs de la table T2 d'ou le fullscan. De manière général, il faut être le plus restrictif possible dans les requêtes. Si tu veux comparer des éléments dans deux tables sans restriction, c'est fullscan obligatoire. Gozzs |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com