idencial
Одинаковый
nested sets, скорость и привязка к структуре сайта
Автор класса по работе с nested sets рекомендовал следующее
table page
-----------------
p_id
p_title
p_content
p_is_active
Казалось бы так можно связать мои странички со структурой, но хочется следующего
1. Хочется хранить ифнормацию о том, что элемент структуры является, например, не конкретной страницей, а разделом.
Т.е для этого элемента не формировать страницу изходя из введенного контента, а просто выводить каталог страниц этого раздела
2. Хочется хранить информацию о том, что элемент структуры является, например, не конкретной страницей, а каким-то модулем,
например, фотоальбомом или модулем новостей
В связи с этим возникает несколько вопросов
1. Где лучше хранить параметр p_is_active. Ведь это относится к элементу структуры и я не хочу выводить в меню сайта элементы, у которых p_is_active = false
Можно хранить в таблице page, но тогда мы при выводе меню делаем запрос с объединением и значит теряем в скорости
2. В какой таблице лучше хранить параметры, касающиеся типа страницы и как лучше осуществить связь с модулями
ЗЫ.
Просто очень хочется не трогать таблицу categories
Автор класса по работе с nested sets рекомендовал следующее
Предположим, что в дополнение к этой структуре я делаю таблицуопыт показывает, что структуру с обходом дерева лучше хранить отдельно от
данных, т.к. в этом случае при обновлении таблицы очень долго обновляются
индексы, да и данные могут сделать невозможным формат записи фиксированной
длины, что тоже кардинально скажется на скорости.
Самой оптимальной структурой по-моему будет:
CREATE TABLE categories (
cat_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
cat_left INT UNSIGNED NOT NULL,
cat_right INT UNSIGNED NOT NULL,
cat_level INT UNSIGNED NOT NULL,
PRIMARY KEY(cat_id)
KEY (cat_left, cat_right, cat_level)
);
В итоге MySQL за многими запросами даже не будет обращаться к файлу с данными.
Ему будет хватать файла с индексами. А когда уже пройдёт всё фильтрование в
таблице с деревом, по примари-кею быстро произойдёт линкование с остальными
данными.
table page
-----------------
p_id
p_title
p_content
p_is_active
Казалось бы так можно связать мои странички со структурой, но хочется следующего
1. Хочется хранить ифнормацию о том, что элемент структуры является, например, не конкретной страницей, а разделом.
Т.е для этого элемента не формировать страницу изходя из введенного контента, а просто выводить каталог страниц этого раздела
2. Хочется хранить информацию о том, что элемент структуры является, например, не конкретной страницей, а каким-то модулем,
например, фотоальбомом или модулем новостей
В связи с этим возникает несколько вопросов
1. Где лучше хранить параметр p_is_active. Ведь это относится к элементу структуры и я не хочу выводить в меню сайта элементы, у которых p_is_active = false
Можно хранить в таблице page, но тогда мы при выводе меню делаем запрос с объединением и значит теряем в скорости
2. В какой таблице лучше хранить параметры, касающиеся типа страницы и как лучше осуществить связь с модулями
ЗЫ.
Просто очень хочется не трогать таблицу categories