@SET1

Как ускорить запрос MySQL?

Какие индекс поставить? Сейчас есть составной индекс на article, status, type, но запрос занимает 3,5 секунды.

SELECT tbl_publication.id, tbl_publication.name, tbl_publication.content, tbl_publication.create_time, tbl_publication.type, tbl_publication.section_id, tbl_publications_media.media_url FROM tbl_publication LEFT JOIN tbl_publications_media ON tbl_publication.id = tbl_publications_media.publication_id AND tbl_publications_media.media_type = 3 WHERE tbl_publication.article = 0 AND tbl_publication.status = 1 AND tbl_publication.type = 0 AND (tbl_publications_media.media_type IS NULL OR tbl_publications_media.media_type = 3) GROUP BY id ORDER BY id DESC LIMIT 12


в таблице tbl_publications_media всего 1 запись, значит дело в таблице tbl_publication (в ней 250 000 записей)

Результат EXPLAIN:
5f908e8ed9aff375313684.png
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ответы на вопрос 2
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
Для ускорения запроса проиндексируйте поля использыемые в WHERE вашего запроса.
ALTER TABLE tbl_publication
    ADD INDEX  status_ix (status),
    ADD INDEX  type_ix (type);
Ответ написан
IlyaEvseev
@IlyaEvseev
Opensource geek
Используйте Explain для отладки, он обычно сразу показывает причину:
www.mysql.ru/docs/man/EXPLAIN.html
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы