Autor Zpráva
Cooolio
Profil *
Pomůžete mi prosím zjednodušit tento SQL dotaz? Nejsem si jistý těmi LEFT JOINy, zda by nešlo již připojené tabulky použit znovu
"SELECT t.id as t_id, t.subject as t_subject, t.home as t_home, t.xhome as t_xhome, t.time as t_time, t.author as t_author, t.guest as t_guest, p.id as p_id, p.xhome as p_xhome, p.author as p_author, p.guest as p_guest, p.time as p_time, r.title as r_title, up.username as up_username, up.publicname as up_publicname, ut.username as ut_username, ut.publicname as ut_publicname,
          (SELECT COUNT(id) FROM `" . _prefix . "posts` WHERE id<p_id AND type=5 AND xhome=p_xhome AND home=t_home) as page_result
                        FROM  `" . _prefix . "posts` t
                        LEFT JOIN `" . _prefix . "posts` p ON (p.xhome=t.id)
                        LEFT JOIN `" . _prefix . "users` up ON (up.id=p.author)
                        LEFT JOIN `" . _prefix . "users` ut ON (ut.id=t.author)
                        INNER JOIN `" . _prefix . "root` r ON (t.home=r.id AND r.level<=" . _priv_level . ")
                        WHERE t.bumptime=p.time OR t.bumptime=t.time AND t.type=5 AND t.xhome=-1 ORDER BY t.bumptime DESC LIMIT " . (int)$limit
Kajman
Profil
Tabulku sice připojujete vícekrát, ale berete z ní jiné řádky. Samotný sql dotaz asi zkrátit nelze, pokud trvá dlouho, ověřte si přes explain dostupnost a použití indexů.

Zjednodušit dotazy by šlo přesunutím logiky do aplikace. Ake pak budete předělávat celý php kód.
Viz např. www.notorm.com/#performance
Cooolio
Profil *
Děkuji

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:

0