SELECT
o.*, types.type as type, categories.category AS category, c2.category as parentName, from_sites.from_site AS from_site
FROM oglasi AS o
LEFT JOIN categories ON o.category_id = categories.category_id
LEFT JOIN from_sites ON o.from_site_id = from_sites.from_site_id
LEFT JOIN types on o.type_id = types.type_id
LEFT OUTER JOIN categories c2 on categories.parent = c2.category_id
WHERE from_sites.from_site_id = 4
ORDER BY izdvojen,title ASC
LIMIT 0, 10;
Nisam nikada ranije radio ovako nesto , pa bi mi dobrodosle smernice. Ako ovaj gornji query moze nekako da se optimizuje to bi mi bio prvi korak.
Evo recimo jednog pitanja , posto mi uopste nije jasno zasto se ovo desava:
Imam primary key na o.oglas_id i ni jedan drugi index u ovoj tabeli.
Imam jos index na from_sites.from_site_id koji je takodje primary key.
Ako izvrsim query pod ovim uslovima dobijem:
# Query_time: 1.616000 Lock_time: 0.000000 Rows_sent: 10 Rows_examined: 375644
Odnosno explain mi kaze za tabelu o (oglasi) ovo :
1 SIMPLE o ALL NULL NULL NULL NULL 375604 Using where
Koliko sam saznao iz nekog tutorijala na netu ovo ne valja ovako,pa sam probao da stavim index na o.from_site_id i misleci da cu dobiti neko ubrzanje,
iznenadio sam se:
# Query_time: 3.350000 Lock_time: 0.001000 Rows_sent: 10 Rows_examined: 218087
Kao prvo koliko vidim query je prosao kroz manje redova nego malopre,a ipak mu je trebalo duplo vise vremena!
A explain se sad ne zali,kaze :
1 SIMPLE o ref from_site_id from_site_id 1 const 217931 Using where
Znaci nije mi jasno zasto upotrebom indexa ne da nisam dobio ubrzanje,vec mi se duplo sporije izvrsio upit.
Zapravo ovaj gornji query se sastavlja dinamicki , ali sam za primer uzeo ovo (from_site_id=4) zato sto tom doticnom id-ju odgovara tih 217 hiljada redova.
Jos jedno pitanje,najvise mi se radi upit po polju o.title koje mi je sad varchar , i u php-u trazim sa LIKE "%izraz%" .
Da li bih dobio neko ubrzanje ako bih na o.title stavio full text index ?
Svaka pomoc je dobrodosla!
EDIT: Koristim Mysql 5.1.54 i odradio sam test sa FULL TEXT-om i radi dosta brze. Naravno prethodno pitanje jos uvek stoji,odnosno kako da optimizujem gornji query ?
[Ovu poruku je menjao doktor83 dana 13.12.2011. u 22:12 GMT+1]
www.oxo.rs