0
moneyget
08.06.14
✎
21:40
|
Добрый день
Все работало, но база выросла и начал тупить (долго выполнятся) вот такой запрос
SELECT p.*, up.imageurl as avatar, u.login as userlogin, u.nickname as nickname,
(SELECT COUNT(ap.id) FROM cms_freelance_aps ap LEFT JOIN cms_users au ON au.id = ap.user_id WHERE ap.project_id = p.id AND au.is_deleted = 0 AND au.is_locked = 0) as enrcount,
(SELECT COUNT(ad.id) FROM cms_freelance_aps ad WHERE ad.project_id = p.id) as added
FROM cms_freelance_projects p
LEFT JOIN cms_users u ON u.id = p.user_id
LEFT JOIN cms_user_profiles up ON up.user_id = p.user_id
LEFT JOIN cms_freelance_aps a ON a.project_id = p.id
WHERE p.published <> -1 AND u.is_deleted = 0 AND u.is_locked = 0
GROUP BY p.id
ORDER BY p.published DESC, p.id DESC
Если убрать
GROUP BY p.id
ORDER BY p.published DESC, p.id DESC
все ок, работает быстро, если убрать только одну из этих строк, тупит. Т.е. проблема в них.
Благодарю всех откликнувшихся.
|
|
1
Necessitudo
08.06.14
✎
21:49
|
А если все без группировки и сортировки поместить во временную таблицу, проиндексировав ее по полям группировки-сортировки, а потом уже и сделать сии действия на данных временной таблицы?
|
|
2
sda553
08.06.14
✎
22:06
|
У тебя какой то из джойнов тупит.
Сверху (временно) в селекте оставь только p.*
И потом эти лефт джойны все закомменть. Если скорость ок(а иначе странно), то раскомментивай по очереди и смотри, кто затупил
|
|