chelkaz
@chelkaz

MySQL может только один индекс для запроса?

В документации ясно написано, что MySQL может использовать только один индекс для запроса.
И существуют для этого составные индексы. На примере:
SELECT * FROM users WHERE age = 29 AND gender = 'male'
Нам следует создать составной индекс на обе колонки:
CREATE INDEX age_gender ON users(age, gender);

Но как быть мне, если у меня основная таблица например "Элементы" elements они имеют посты, это еще таблица posts для постов еще есть таблица категории categories
и посты имеют комментарии, это еще таблица comments
Так же посты или комментарии имеют пользователя из таблицы users
------------------
Так вот связи у них один ко многим
И перейдя на страницу с элементом, мне по его id нужно получить все посты для него и все комментарии к постам и пользователей написавших посты и комментарии.
Как в таком случаи построить правильно индексы? Ведь мне запросом нужно получить из нескольких таблиц.
  • Вопрос задан
  • 263 просмотра
Пригласить эксперта
Ответы на вопрос 1
@vshvydky
если вопрос в скорости, то не обязательно зацикливаться на составных индексах. Составной индекс очень полезен там где идет (true, key2342342342342342) индекс true/false малополезен как отдельный индекс. А в случае джойнов, все иды в таблицах должны быть индексированы. Далее запускаешь EXPLAIN SELECT и смотришь где проседает.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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