Есть большая база данных (порядка 50+ миллионов строк), состоящая из десятка связанных таблиц, которые формируют древовидную (в 1-2 уровня) структуру.
Выглядит так:
Сейчас появилась необходимость делать выборки из этой базы с учетом всего дерева, т.е.,
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`
Сервер
пока справляется с такими запросами, но очевидно, что это ненадолго.
Вопрос в том, как (и нужно ли) оптимизировать структуру таблиц для таких случаев?