logo
14.10.2012 16:29
1
Dobrý den,

mám vytvořený pohled, který spojuje několik tabulek, dotaz je optimalizovaný. Prostý select z pohledu je bez problémů (prochází se právě n řádku, kdy n je shodné s počtem výsledků). Je možné nějak optimalizovat také dotaz do pohledu s where?

Děkuji


Uměl by někdo poradit? Jedná se o mysql.
14.10.2012 17:06
2
A co říká EXPLAIN?
14.10.2012 17:23
3
V případě selectu z pohledu bez where explain říká, že se prochází pouze ty řádky, které jsou výsledkem. Jakmile přidám do selectu z pohledu where, tak se prochází vše, index to nebere v potaz. Domnívám se, že to je neřešitelné, ale radeji se ptám. Pokud tu podmínku dám přímo do pohledu, tak je vše ok, ale to pro mě není vyhovující. Ještě mě napadlo dát do pohledu podmínku s uživatelskou proměnnou, ale ta tam být nemůže podle dokumentace.

---------- Příspěvek doplněn 14.10.2012 v 17:26 ----------

select * from view_dokumenty_platne

id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE dv range id_dokumenty,stav_datum_platnosti_od_datum_platnos ti_do stav_datum_platnosti_od_datum_platnosti_do 7 NULL 1 Using where
1 SIMPLE d eq_ref PRIMARY PRIMARY 4 idok.dv.id_dokumenty 1
1 SIMPLE kd ref id_dokumenty_id_kategorie id_dokumenty_id_kategorie 4 idok.d.id_dokumenty 1 Using index



select * from view_dokumenty_platne where id_kategorie=3

id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE d ALL NULL NULL NULL NULL 3
1 SIMPLE dv ref id_dokumenty id_dokumenty 4 idok.d.id_dokumenty 2 Using where
1 SIMPLE kd ref id_dokumenty_id_kategorie id_dokumenty_id_kategorie 4 idok.d.id_dokumenty 1 Using where; Using index