Autor Zpráva
Zool
Profil *
Ahoj chtěl jsem se zeptat mám sql dotaz
select COUNT(*) as pocet 
from `ZBOZI` z 
inner join `STR_ENTIT` st on z.ID_ZBO=st.ID_ZBO 
inner join `STRANKY` s on st.ID_ST=s.ID_ST 
where s.ADRESA_STR='adresa'
jak že když mám v tabulce tak 80 tisíc záznamů, že doba trvání tohoto dotazu trvá kolem sekundy.? mám v něm něco špatně?
děkuji
pcmanik
Profil
Zool:
Hoď sem výpis z explainu, pravdepodobne sú zle použité indexy.
Zool
Profil *
pcmanik:
Nevím z čeho výpis z phpmyadminu??


Myslíš pomocí příkazu EXPLAIN?
tady to je
id     select_type     table     type     possible_keys     key     key_len     ref     rows     Extra
1     SIMPLE     st     ALL     ID_ST,ID_ZBO     NULL    NULL    NULL    208812     
1     SIMPLE     z     eq_ref     PRIMARY     PRIMARY     8     senkyrcom.st.ID_ZBO     1     Using index
1     SIMPLE     s     eq_ref     PRIMARY     PRIMARY     4     senkyrcom.st.ID_ST     1     Using where
Virtus
Profil
Přidej do tabulky `STR_ENTIT` indexy nad sloupce `ID_ST` a `ID_ZBO`, pokud to upravuješ v phpmyadminu tak je edituj, každý zvlášť nebo použí v struktuře tabulky rychlý menu u jednotlivých sloupců. Phpmyadmin má totiž oblibu, když se editují naráz, z nich dělat složený index a to v tomhle případě nechcem.

Edit:

Kajman:[#6]
Ale ty indexy tam podle explainu jsou.
Tak to se omlouvám, nějak sem to přehlíd, jak jsou ty nadpisy těch sloupců posunuté...
Camo
Profil
Otázka:
Nepomohlo by zmeniť poradie tých tabuliek v selecte? Že by bola prvá tabuľka STRANKY na ktorú sa odkazuje WHERE? S indexom na tom stĺpci s.ADRESA_STR.
Ide mi o to ALL pri prvej tabuľke. Takto:
select COUNT(*) as pocet 
from `STRANKY` s
inner join `STR_ENTIT` st on s.ID_ST=st.ID_ST
inner join `ZBOZI` z on z.ID_ZBO=st.ID_ZBO
where s.ADRESA_STR='adresa'
Kajman
Profil
Virtus:
Přidej do tabulky `STR_ENTIT` indexy nad sloupce `ID_ST` a `ID_ZBO`
Ale ty indexy tam podle explainu jsou.

Zool:
Vypadá to, že nemáte index na sloupcem STRANKY.ADRESA_STR. Dále bych použil právě ten spojený index (ID_ST,ID_ZBO) na tabulkou s entitamy. Nebo nechte jen ty samostatné a vůbec nedělejte join na zbozi, pokud se nestává, že ke stránkách připojujete neexistující zboží (hlídáte integritu např. cizími klíči).
Zool
Profil *
Kajman:
Opět děkuji, pomohlo, neměl jsem ten index nad tím sloupcem ADARESA_STR.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: