root09
@root09

Как поставить индексы?

Есть таблица с записями, их около 300 000, у каждой из этих записей есть теги, в районе 20 штук, в итоге имеем 300к записей и около 6кк тегов в связующей таблице, выполняется поиск по тегу около 30 секунд

Таблицы:

items
id, name, sort_column

tags
id, name

items_tagged
id, item_id, tag_id

Индексы:
tags: name
items_tagged: item_id, tag_id, item_id + tag_id

Сейчас запрос такой:
select * from `items` where exists (select * from `tags` inner join `items_tagged` on `tags`.`id` = `items_tagged`.`tag_id` where `items`.`id` = `items_tagged`.`item_id` and `name` = 'FIND TAG') order by `sort_column` desc limit 50


Выполняется он 30~ секунд, возможно ли его ускорить хотя бы до секунды? Какие индексы можно поствить?
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 1
VladimirAndreev
@VladimirAndreev
php web dev
А вложенный запрос зачем?
Сделайте два разных запроса или один с 2 inner join
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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