У меня есть 2 SQL-запроса, который я пытаюсь оптимизировать, чтобы удалить «Использование где; Использование временного; Использование файловой сортировки».
первый запрос:
SELECT DISTINCT M.pseudo , M.id as id , CM.send FROM `chat_messages` CM
inner JOIN `uniic_member` M
ON ((CM.`receiver_id` = 22141 AND M.id=CM.sender_id and CM.`status` != 2)
OR (CM.`sender_id` = 22141 AND M.id=CM.receiver_id AND CM.`status` != 1))
GROUP BY pseudo ORDER BY send DESC;
второй запрос:
SELECT e.*, p.filename AS photo, m.pseudo AS pseudo, m.gender AS gender
FROM uniic_mailbox AS e
LEFT JOIN uniic_member AS m ON m.id = e.sender_id LEFT JOIN uniic_photos AS p
ON (m.id = p.member_id AND p.main_photo = 1) WHERE e.status IN (0,1)
AND e.member_id = 2248 AND e.sender_id
NOT IN (SELECT ban_id FROM uniic_blacklist WHERE member_id = 2248)
AND e.created_at = (SELECT MAX(created_at) FROM uniic_mailbox
WHERE status IN (0,1) AND member_id = 2248 AND sender_id = e.sender_id LIMIT 1)
GROUP BY e.id ORDER BY e.created_at DESC LIMIT 0 , 11;
Скажите, пожалуйста, есть ли способ исправить «Использование где; Использование временного; Использование файловой сортировки» и улучшить производительность этого запроса?
Задача ещё не решена.
Других решений пока нет …