@Curvyyy

Как правильно делать выборку из большого количества связанных таблиц?

Есть большая база данных (порядка 50+ миллионов строк), состоящая из десятка связанных таблиц, которые формируют древовидную (в 1-2 уровня) структуру.
Выглядит так:
TThxXW4.png
Сейчас появилась необходимость делать выборки из этой базы с учетом всего дерева, т.е.,
SELECT * FROM `items`
JOIN `items_categories` ON (`items`.`ID`=`items_categories`.`ItemID`)
JOIN `items_categories_subitems` ON (`items_categories`.`ID`=`items_categories_subitems`.`CategoryID`)
JOIN `items_subitems` ON (`items`.`ID`=`items_subitems`.`ID`)
WHERE `items`.`Data` = '...'
AND `items_categories_subitems`.`Data`='...'
AND `items_subitems`.`Data`='...'
GROUP BY `items`.`ID`

Сервер пока справляется с такими запросами, но очевидно, что это ненадолго.
Вопрос в том, как (и нужно ли) оптимизировать структуру таблиц для таких случаев?
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 1
beliyadm
@beliyadm
because open source matters
Самый лучший вариант - пишите разные варианты запросов (если переделать структуру БД невозможно) и смотрите в профайлере результаты и скорость выборки
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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