Есть таблица messages
clip2net.com/s/3mWnxFC 2кк запией (1.1гб)
И таблица user_profile
clip2net.com/s/3mWnRaW 10к записей (1.5мб)
И 2 запроса.
первый ждал 5 минут, так и не дождался
второй отработал за 2 минуты примерно
можно их как то оптимизировать? или это задача не для mysql? (в sql noob)
// получить список диалогов (где ?i - это id текущего залогиненного юзера)
SELECT * FROM
(
SELECT t.*, c.user_profile_id, c.user_profile_avatar, c.user_profile_realname
FROM " . $this->table . " t
JOIN dev_users_profile c
ON t.message_target = c.user_profile_id
OR t.message_author = c.user_profile_id
WHERE (t.message_author=?i AND c.user_profile_id!=?i)
OR (t.message_target=?i AND c.user_profile_id!=?i)
ORDER BY t.message_date DESC
) AS temp
GROUP BY user_profile_id
ORDER BY message_date DESC
// получить список сообщений с определенным юзером
SELECT * FROM dev_messages t
JOIN dev_users_profile c
ON t.message_author = c.user_profile_id
WHERE (t.message_author =949 AND t.message_target=1)
OR (t.message_author =1 AND t.message_target=949)