blackdarthvader
@blackdarthvader
Только учусь кодить ^_^

Как оптимизировать select запрос в mysql?

Здравствуйте, столкнулся с проблемой медленной обработки sql запроса
SELECT * FROM searchhistory ORDER BY data_time DESC LIMIT 10

Этот запрос выводит историю последних 10 поисковых запросов посетителей.

Таблица searchhistory содержит в себе 370 тысяч строк. Я посмотрел лог медленных sql запросов и увидел, что этот запрос обрабатывается больше двух секунд, а учитывая что сайтом пользуются очень много людей это приводит к тому, что нагрузка на процессор увеличивается до 95-100%.

Time: 2020-09-30T07:59:51.473013Z
# User@Host: user[user] @ localhost [127.0.0.1]  Id: 61686
# Query_time: 2.624069  Lock_time: 0.000058 Rows_sent: 10  Rows_examined: 370071
SET timestamp=1601452791;
SELECT * FROM searchhistory ORDER BY data_time DESC LIMIT 10;


Не подскажите как оптимизировать этот запрос? Может как-то его кешировать?
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
Fragster
@Fragster
помогло? отметь решением!
Создать индекс на data_time с обратной сортировкой. https://dev.mysql.com/doc/refman/8.0/en/create-ind...
Что-то типа
CREATE INDEX data_time_idx ON searchhistory (data_time desc);
набирал по памяти, в синтаксисе могу немного наврать.
Ну и, вроде, mysql должен быть относительно свежим для этого.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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