Все работало, но база выросла и начал тупить (долго выполнятся) вот такой запрос
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
все ок, работает быстро, если убрать только одну из этих строк, тупит. Т.е. проблема в них.
А если все без группировки и сортировки поместить во временную таблицу, проиндексировав ее по полям группировки-сортировки, а потом уже и сделать сии действия на данных временной таблицы?
У тебя какой то из джойнов тупит.
Сверху (временно) в селекте оставь только p.*
И потом эти лефт джойны все закомменть. Если скорость ок(а иначе странно), то раскомментивай по очереди и смотри, кто затупил
даже не пойму зачем он ))) без него строк столько же, и количество полей тоже
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший