MYSQL. Категории - лучше одна таблица с чайлдами и парентами или несколько таблиц?

12
akaplenko
На сайте с 09.09.2009
Offline
48
#11
edogs software
На сайте с 15.12.2005
Offline
775
#12

Miracle,

Обратите внимание при анализе способов вот на какой момент.

Базовый это просто рут-чайлд, универсальный способ для всего.

За универсальность Вы платите некоторой усложненностью при построении запроса на выборку (как бы то ни было но select * from cat where subroot in (2,3) несколько проще чем запрос из нескольких джоинов) и некоторой замедленностью оной (прямая выборка под ключам, против хитроджоина или кучи запросов на выборку).

Именно поэтому используют Materialized path например или nested sets, а не просто так:)

Materialized path в текстовом поле по сути просто кэширование, разнеся на 3 (2? смотря что там под 3 уровнями подразумевается вложенности. ) отдельные целочисленные поля Вы улучшите размер таблицы и скороть оной (по сути то что мы предложили, это просто легкий вариант MP).

Поэтому если у Вас реально вложенность ограниченная, то подумайте стоит ли Вам охватывать неограниченные просторы.

И еще момент. Хитроджоин при выборке из рут-чайлд он псевдохорош в плане реализации идеи неограниченной вложенности. Потому что когда речь заходит о действительно хорошем уровне вложенности (не 3), то рут-чайлд или кладет мускул при хитроджоине или Вы начинаете генерить кучу запросов (что бы не хитроджоинить кучу уровней).

Впрочем если у Вас задача какая-то совсем банальная, то рут-чайлд вполне сгодится, хотя бы с точки зрения привычности понимания для других программеров которые потом будут ковыряться в коде.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
_savit
На сайте с 19.03.2006
Offline
135
#13

Но в любом из методов который бы вы не выбрали (AL, MP, NS), советую добавлять поле level (классические варианты этого обычно не подразумевают) ... это значительно упрощает запросы и соответственно сказывается на их скорости выполнения

https://vk-botovod.ru - комбайн ВКонтакте, мультимессенджер, эмулятор жизни аккаунтов
R5
На сайте с 22.03.2010
Offline
24
#14
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий