@kirill-93

MySQL индекс на поле для сортировки?

У меня есть такая таблица:
id, entity_id, total_likes, total_comments, total_shares, created_at

На самом деле полей больше, для примера упростил.
Запрос к ней выглядит так:
SELECT * FROM table WHERE entity_id = ? AND created_at > ? ORDER BY total_comments

Для такого запроса я создал индекс entity_id_created_at_total_comments. Но что если мне нужно сортировать по total_shares или total_likes ? Я ведь не могу добавить к существующему индексу эти поля, они не будут работать. Мне нужно создавать еще 2 индекса entity_id_created_at_total_shares и entity_id_created_at_total_likes?
  • Вопрос задан
  • 194 просмотра
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
создайте разные и проверьте какой вариант лучше через explain.

я бы вообще не стал order засовывать в индекс.
Если данных очень много, то отдельный индекс на поле которое будет в order by.
Либо только для where индексы и достаточно.

В целом проще проверить как быстрее отработает.
Создавать на все комбинации точно замедлит выборку и раздует таблицу.
Ответ написан
Ваш ответ на вопрос

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

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