Forum Webscript.Ru

Общие => Базы данных => Тема начата: Tryapkonator от 08 Июля 2005, 07:25:44

Название: Быстродействие NESTED деревьев...
Отправлено: Tryapkonator от 08 Июля 2005, 07:25:44
Реализация каталогов итп на NESTED деревьев удобнее и правельнее итп, только я вот чего не могу вкурить =))) Я добавляю запись к дереву, половина индексов меняется к чертям собачим. Т.е. теоритически если ветка дерева очень большая и разветвленная, то добавление новой ветки будет вести к смене n-ного количества индексов, если новая ветка расположена максимально к корню, получается что нуно будет менять вообще практически все индексы. И где тут быстродействие? Или я чего-то не понимаю?
Название: Быстродействие NESTED деревьев...
Отправлено: Макс от 08 Июля 2005, 13:09:39
ты говоришь о быстродействии добавлении нового узла.

А nested sets славится быстродействием выборки и используется для деревьев со сравнительно редкими вставками
+
Если струкутуру дерева хранить в отдельной таблице, она будет иметь фиксированный формат и ее будет работать быстрее.

ЗЫ
мне известен древовидный форум написаный с использованием Nested Sets  и работающий успешно.
Название: Быстродействие NESTED деревьев...
Отправлено: Tryapkonator от 08 Июля 2005, 19:51:13
А можно на этот форум глянуть? А то как-то... Ну не знаю. Еще можно понять использование Nested Sets для каталога сайта, который задается единожды и редактируется крайне редко, но форум...
Название: Быстродействие NESTED деревьев...
Отправлено: Макс от 08 Июля 2005, 20:12:37
нет, ссылка не для публики.
Там просто структура отделена от данных. В таблице структуры всего 4 int-овых поля и всего один индекс. С такими таблицами mysql работает быстро.
Название: Быстродействие NESTED деревьев...
Отправлено: Tryapkonator от 12 Июля 2005, 04:15:51
1 индекс. Мне трудно спорить, я еще новичек, но... Если крепить данные со структурой, то нужен уникальный индекс. Обычно он и бывает первичным, чтобы точечные запросы происходили быстрее. Потом 2 индекса левой и правой ганицы и, как я понимаю, уровень aka level. Если я все правильно расписал, то было бы гораздо удобнее поставить еще индекс и по уровню, хотя я могу ошибаться...
Название: Быстродействие NESTED деревьев...
Отправлено: Макс от 12 Июля 2005, 12:31:20
ах да, про первичный ключ забыл. Два индекса достаточно:
primary key (node_id)
key (cat_left, cat_right, cat_level)

Про особенности составных индексов в mysql можешь прочесть в мане (если еще не знаешь)
Название: Быстродействие NESTED деревьев...
Отправлено: Макс от 12 Июля 2005, 12:32:41
Цитировать
Tryapkonator:
Если крепить данные со структурой, то нужен уникальный индекс.

я  выше написал, что данные и структуру надо разделять на 3 таблицы.
Название: Быстродействие NESTED деревьев...
Отправлено: Tryapkonator от 12 Июля 2005, 17:04:03
Про составные индексы вкурсе, про оссобенности в mysql нет, гляну.
Цитировать
я выше написал, что данные и структуру надо разделять на 3 таблицы.

На 2 или на 3?
Название: Быстродействие NESTED деревьев...
Отправлено: Макс от 12 Июля 2005, 17:33:01
Ой, конечно на 2.
Название: Быстродействие NESTED деревьев...
Отправлено: Tryapkonator от 12 Июля 2005, 17:41:54
Да, тогда ясно. Большое спасибо за разъяснение.