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;


Не подскажите как оптимизировать этот запрос? Может как-то его кешировать?
  • Вопрос задан
  • 66 просмотров
Решения вопроса 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 должен быть относительно свежим для этого.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы