У меня есть таблица сообщений чата, которая выросла до> 4 м строк.Оптимизация диапазона дат на большом столе
Мне нужно получить сообщения, отправленные пользователю и от пользователя в течение определенного диапазона дат.
Сначала этот запрос был одобрен, но с текущим размером таблицы он слишком длинный (> 10 с).
Я попытался создать множество комбинаций индексов; MySQL использует составной индекс для messageType + sentDate
SELECT `ofMessageArchive`.*
FROM `ofMessageArchive`
WHERE `ofMessageArchive`.`messageType` IN ('Message')
AND (ofMessageArchive.fromJID = '[email protected]' OR ofMessageArchive.toJID = '[email protected]')
AND (ofMessageArchive.sentDate > '1462235333109')
ORDER BY ofMessageArchive.sentDate ASC LIMIT 50
Любые идеи, как я могу оптимизировать этот запрос?
[EDIT] EXPLAIN
результат:
+----+-------------+------------------+------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------+---------+-------+--------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+------------------+------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------+---------+-------+--------+-------------+
| 1 | SIMPLE | ofMessageArchive | ref | index_ofMessageArchive_on_fromJID_and_toJID,index_ofMessageArchive_on_sentDate,index_ofMessageArchive_on_messageType,idxMessageTypeSentDate,ofMessageArchive_fromjid_idx,ofMessageArchive_tojid_idx | idxMessageTypeSentDate | 767 | const | 731570 | Using where |
+----+-------------+------------------+------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------+---------+-------+--------+-------------+
Просьба EXPLAIN' результат этого запроса –
Добавлено объяснить результат ' – Paludis