Autor | Zpráva | ||
---|---|---|---|
pablo Profil * |
Ahoj, může mi prosím někdo vysvětlit proč mysql neaplikuje index(id, jmeno) na tento dotaz:
EXPLAIN SELECT id, jmeno FROM auto WHERE id IN ( SELECT id_hl FROM auto WHERE id_hl = 'xxx' ) ORDER BY jmeno zatimco na tenhle ho aplikuje? EXPLAIN SELECT id, jmeno FROM auto WHERE id IN ( '5','6' ) ORDER BY jmeno Díky |
||
pablo Profil * |
#2 · Zasláno: 18. 6. 2010, 13:52:23
zatimco na tenhle ho aplikuje(bez otazniku)
EXPLAIN SELECT id, jmeno FROM auto WHERE id IN ( '5','6' ) ORDER BY jmeno |
||
Kajman_ Profil * |
#3 · Zasláno: 18. 6. 2010, 14:00:47
Mysql občas poddotazy ve where dokáže vyhodnocovat pro každý řádek zvlášť jako korelované poddotazy, i když nezávisí na jiných tabulkách. Nejsem si jistý, ale někde jsem tuším četl, že novější verze by tí snad už neměly trpět. Každopádně se osobně snažím takové dotazy preventivně přepsat do spojení...
SELECT id, jmeno FROM auto, ( SELECT id_hl FROM auto WHERE id_hl = 'xxx' ) tmp WHERE id=tmp.id_hl ORDER BY jmeno |
||
pablo Profil * |
#4 · Zasláno: 18. 6. 2010, 18:55:52
jojo díky, podívám se na to
|
||
Časová prodleva: 14 let
|
0