У меня есть запрос, который занимает 17-20 секунд на нашем сервере, и я хотел бы посмотреть, что я могу сделать, чтобы оптимизировать его. MySQL 5.6 будет обновлен до 5.7 в ближайшие пару месяцев.
Запрос:
SELECT pm.mid AS mid
FROM
pm_message pm
INNER JOIN pm_index pmi ON pmi.mid = pm.mid
GROUP BY pm.mid
HAVING (MIN(pmi.deleted) > 0 AND MAX(pmi.deleted) < '1535490002')
LIMIT 1000 OFFSET 0;
Средний столбец в pm_message и pm_index является первичным ключом в обеих таблицах.
В таблице миллионы записей каждая
select count(*) from pm_message;
3748290
select count(*) from pm_index;
6938947
Есть предложения по улучшению этого запроса?
Мне интересно, поможет ли создание «удаленного» столбца в таблице pm_index для индекса?