kshshe
@kshshe
Frontend developer

Как правильно организовать запрос, в котором есть множественные условия по индексу?

Две таблицы:
ideas
ideas_tags

Часть запроса из ideas выглядит так:
AND ideas.id IN (SELECT idea_id FROM ideas_tags WHERE tag_name='aaa' OR tag_name='bbb')

Обнаружил, что когда тегов в запросе много, то запрос SELECT idea_id FROM ideas_tags WHERE tag_name='aaa' OR tag_name='bbb' OR ... OR ... выполняется очень долго.
В таблице ideas_tags индекс tag_name по одному полю, мне нужно либо получить все id идей с любыми из нужных тегами (их иногда может быть до тысячи, либо переделать запрос так, чтобы не приходилось перебирать всю таблицу.
  • Вопрос задан
  • 428 просмотров
Решения вопроса 1
Stimulate
@Stimulate
могу
IN
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега MySQL
Web developer
WHERE tag_name='aaa'

Поиск по строке, да еще и с подзапросом - очень неэффективно.
Лучше при выборе тегов отображать name, но использовать id. Тогда запрос упростится до AND ideas.id IN (1, 2, 3)
Ответ написан
Ваш ответ на вопрос

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

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