|
Индексирование таблицы-матрешки
|
|||
---|---|---|---|
#18+
День добрый! Есть такая задачка. Есть таблица-матрешка с полями id, parentid ну и набором значимых полей. Необходимо упорядочить ее таким образом, чтобы дочерние записи располагались следом за своей родительской. к примеру, чтоб было яснее: id parentid something 1 0 г. Москва 2 0 г. Новосибирск 3 0 г. Владивосток 4 1 ул. Кржижановского 5 1 ул. Свободы 6 2 ул. Ленина ......... 107 5 д. 14 стр.1 ...... 887 6 д. 113 id и parentid - поля Integer Запись у которой parentid = 0 является корневой пытаюсь написать INDEX ON IIF(EMPTY(parentid),STR(id),STR(parentid)+STR(id)) tag tagName при первой выдаче дает "cannot create key for index tagName" после второй выдаче почему-то индексирует ... подскажите решение, пжалуйста ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2010, 15:38 |
|
Индексирование таблицы-матрешки
|
|||
---|---|---|---|
#18+
_usa__83_чтобы дочерние записи располагались следом за своей родительской. к примеру, чтоб было яснее: id parentid something 1 0 г. Москва 2 0 г. Новосибирск 3 0 г. Владивосток 4 1 ул. Кржижановского 5 1 ул. Свободы 6 2 ул. Ленина ......... 107 5 д. 14 стр.1 ...... 887 6 д. 113 Так в примере 4-1 расположена НЕ следом за родительской. По примеру вижу "сортировать записи в порядке по parentid, в пределах одного parentid - по id". В запросах это будет ORDER BY parentid, id. Индекс для ускорения такой выборки аналогично по (parentid, id). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2010, 15:57 |
|
Индексирование таблицы-матрешки
|
|||
---|---|---|---|
#18+
_usa__83_ Есть такая задачка. Есть таблица-матрешка с полями id, parentid ну и набором значимых полей. Вообще-то это называется дерево. Причем в самом классическом его исполнении. И оно не пригодно для стандартных способов выборки или сортировки. Такое рекурсивно обрабатывают. Твой индекс решает проблему только для двухуровневого дерева, третий уровень уже не вписывается. Например (107 5 д. 14 стр.1) у тебя уже не туда куда надо встанет. Для того чтобы можно было его стандартными средствами обработать (например отсортировать как ты хочешь или выбрать все по г.Москва) необходимо вводить дополнительные поля, по которым будет сортировка идти. Есть разные способы, ищи алгоритмы работы с деревьями. В простейшем случае завести поле NUM, рекурсивно туда проставить 1,2,3,... а потом по нему сортировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2010, 16:53 |
|
|
start [/forum/topic.php?fid=41&fpage=90&tid=1584965]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
33ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 17ms |
total: | 144ms |
0 / 0 |