|
|
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Уважаемые коллеги! Прошу Вас, многопытных, помочь мне в следующей задаче. Есть такая структура данных: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Думаю, здесь очевидно, что колонки ID - это PK, а NodeProperty.NodeID - это FK на Node.ID. Есть непреодолимое желание делать запросы вида " Найти все ноды с именем таким-то И со значениями некоторых атрибутов такими-то И чтоб у этих нодов в родителях были ноды с такими-то именами, атрибутами и пропертями И чтоб у этих родителей были еще родители уже с другими именами, атрибутами и пропертями." Предполагается, что таблицы Node и NodeProperty будут заполнятся с интенсивностью ~ 1M и 10M записей в день соответственно. Внимание, вопрос! Что нужно сделать с приведенной структурой и/или какие подходы к реализации самого процесса поиска использовать, чтоб после месяца работы приложения пользователь смог все-таки дождаться ответа на свой вопрос? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 20:14 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Забыл добавить, что когда в запросе поминается родитель, то он не обязательно непосредственный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 20:19 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Sev_ReoЕсть непреодолимое желание делать запросы вида " Найти все ноды с именем таким-то И со значениями некоторых атрибутов такими-то И чтоб у этих нодов в родителях были ноды с такими-то именами, атрибутами и пропертями И чтоб у этих родителей были еще родители уже с другими именами, атрибутами и пропертями." Можно предложить создать таблицу "Родители", в которой перечислить всех родителей этой ноды. По ходу можно указать и уровень дальности родителя (-1, -2, -3 итп.). Может понадобиться в условиях запросов, типра "среди всех родителей, которые не дальше 2-го поколения". В таком случае ваши условия можно формулировать простым JOIN-ом NODE - PARENTS - NODE. Sev_ReoПредполагается, что таблицы Node и NodeProperty будут заполнятся с интенсивностью ~ 1M и 10M записей в день соответственно.При такой интенсивности заполнения вам придется посмотреть в какой размер вам встанет такая новая таблица и будет ли успевать ее заполнять сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 20:48 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Sev_Reo, исходную задачу опишите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 20:50 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Если подумать, то на SQL можно сделать. В Оракле для этого иерархические запросы есть. А если не думать, выбираем данные в XML, натравливаем XSLT, получаем результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 21:28 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Bely Sev_ReoЕсть непреодолимое желание делать запросы вида " Найти все ноды с именем таким-то И со значениями некоторых атрибутов такими-то И чтоб у этих нодов в родителях были ноды с такими-то именами, атрибутами и пропертями И чтоб у этих родителей были еще родители уже с другими именами, атрибутами и пропертями." Можно предложить создать таблицу "Родители", в которой перечислить всех родителей этой ноды. По ходу можно указать и уровень дальности родителя (-1, -2, -3 итп.). Может понадобиться в условиях запросов, типра "среди всех родителей, которые не дальше 2-го поколения". В таком случае ваши условия можно формулировать простым JOIN-ом NODE - PARENTS - NODE. Sev_ReoПредполагается, что таблицы Node и NodeProperty будут заполнятся с интенсивностью ~ 1M и 10M записей в день соответственно.При такой интенсивности заполнения вам придется посмотреть в какой размер вам встанет такая новая таблица и будет ли успевать ее заполнять сервер. Разумный подход для малых объёмов и/или для относительно плоских деревьев. В худшем случае требует N**2/2 записей в таблице пар предок-потомок, что приводит за месяц к 10**15 записей. Кстати, Sev_Reo, может быть стоит использовать bigint вместо int? Иначе при указанных темпах через 8-16 месяцев у вас могут появится проблемы. Если запросы являются относительно статическими можно заготовить несколько шаблонов joins, которые будут выполнять необходимую фильтрацию. В случае динамических и/или глубоких запросов наверно предстоит генерировать нечто процедурное. Если диалект позволяет построить индексы для XPATH запросов, следует исследовать производительность, IMHO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2007, 10:25 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
parserrrЕсли подумать, то на SQL можно сделать. В Оракле для этого иерархические запросы есть.при большой вложенности JOIN побыстрее будет, пожалуй, чем CONNECT BY. parserrrА если не думать, выбираем данные в XML, натравливаем XSLT, получаем результат.А если подумать, то на объемах в несколько млн. XML просто помрет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2007, 10:27 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
drevРазумный подход для малых объёмов и/или для относительно плоских деревьев. В худшем случае требует N**2/2 записей в таблице пар предок-потомок, что приводит за месяц к 10**15 записей.Если люди не боятся пополнения в млн. строк ежедневно , то бояться таблички в несколько млрд. строк, состоящей из двух чисел глупо. Здесь надо смотреть на реальную глубину необходимого поиска. drevВ случае динамических и/или глубоких запросов наверно предстоит генерировать нечто процедурное.процедурный поиск по нескольким млн. строк... и Вы полагаете это сможет работать за адекватное время? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2007, 10:35 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Bely drevРазумный подход для малых объёмов и/или для относительно плоских деревьев. В худшем случае требует N**2/2 записей в таблице пар предок-потомок, что приводит за месяц к 10**15 записей.Если люди не боятся пополнения в млн. строк ежедневно , то бояться таблички в несколько млрд. строк, состоящей из двух чисел глупо . Здесь надо смотреть на реальную глубину необходимого поиска. drevВ случае динамических и/или глубоких запросов наверно предстоит генерировать нечто процедурное.процедурный поиск по нескольким млн. строк... и Вы полагаете это сможет работать за адекватное время? :) 1. Нет, не поиска, а дерева . За год при достачной глубине дерева табличка легко уйдёт в терабайты. Поэтому глупо не просчитывать это заранее. 2. Безусловнo. При достаточной глубине поиска один селект просто не справится. Поэтому придется организовывать их цепочку с помощью процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2007, 11:18 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
drev1. Нет, не поиска, а дерева . За год при достачной глубине дерева табличка легко уйдёт в терабайты. Поэтому глупо не просчитывать это заранее.Считать надо, не спорю. Но не теоретически, с учетом пролета всех комет, а исходя из реальных предположений о будующих данных. drev Belyпроцедурный поиск по нескольким млн. строк... и Вы полагаете это сможет работать за адекватное время? :)2. Безусловнo. При достаточной глубине поиска один селект просто не справится. Поэтому придется организовывать их цепочку с помощью процедуры.Ну вот вам примерные исходные данные. Глубина дерева - от 1 до 50, средняя глубина - 10. Первое условие (на сам узел) - возвращает примерно 1 млн строк. Второе условие (на родителя 1) - выдаст результат 10 тыс. строк Третье условие (на родителя родителя) - выдаст в результате 1000 строк Можете "коротенько" набросать алгоритм процедурки, которая будет быстрее селекта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2007, 11:30 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
до кучи: не забыть исследовать возможности покрывающего кластерного индекса (с интенсивностью ~ 1M и 10M записей в день, шансы пережить месяц для такого исследования наверное есть :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2007, 11:50 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Bely drev1. Нет, не поиска, а дерева . За год при достачной глубине дерева табличка легко уйдёт в терабайты. Поэтому глупо не просчитывать это заранее.Считать надо, не спорю. Но не теоретически, с учетом пролета всех комет, а исходя из реальных предположений о будующих данных. drev Belyпроцедурный поиск по нескольким млн. строк... и Вы полагаете это сможет работать за адекватное время? :)2. Безусловнo. При достаточной глубине поиска один селект просто не справится. Поэтому придется организовывать их цепочку с помощью процедуры.Ну вот вам примерные исходные данные. Глубина дерева - от 1 до 50, средняя глубина - 10. Первое условие (на сам узел) - возвращает примерно 1 млн строк. Второе условие (на родителя 1) - выдаст результат 10 тыс. строк Третье условие (на родителя родителя) - выдаст в результате 1000 строк Можете "коротенько" набросать алгоритм процедурки, которая будет быстрее селекта? 1. будующих - это красиво:) 2. Просчитать это может только спросивший. Данные у него. А Вы, с Вашими "несколькими миллиардами" ввели его в заблуждение. 3. Вы не умеете либо читать, либо считать. Где Вы видите " При достаточной глубине поиска " ? В Вашем достаточно безграмотно поставленном примере глубина поиска равна 2. От внука до деда. Глубина дерева абсолютно не релевантна в поставленной Вами задаче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2007, 12:19 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
drev2. Просчитать это может только спросивший. Данные у него. А Вы, с Вашими "несколькими миллиардами" ввели его в заблуждение.Телепатическая экспертная оценка. Зато вы его со своими теоретическим экспонентным ростом ввели в страх. Если человек глупый, то ему любой совет здесь не поможет. А умный и так догадается прикинуть сколько у него данных получится в списке родителей. drev3. Вы не умеете либо читать, либо считать. Где Вы видите " При достаточной глубине поиска " ? В Вашем достаточно безграмотно поставленном примере глубина поиска равна 2. От внука до деда. Глубина дерева абсолютно не релевантна в поставленной Вами задаче.Это вы недочитали. Вот изначальное условие от автора: авторЗабыл добавить, что когда в запросе поминается родитель, то он не обязательно непосредственный.Так что родитель я трактовал в этом ключе. Или для вас глубина поиска до 50 - невелика? Ответа насчет алгоритма процедурки - я так и не дождался... а было бы интересно посмотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2007, 12:29 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Советовал бы 1) посмотреть на этом форуме сообщения по структуре хранения деревьев (поскольку только внесение одного допольнительного поля в эту структуру CountNodeChilds позволяет существенно (в разы) сократить затраты на обработку дерева) 2) Качнуть в вашу структуру "мусора" в количестве не менее 1 000 000 записей и потренироваться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2007, 12:36 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Bely drev2. Просчитать это может только спросивший. Данные у него. А Вы, с Вашими "несколькими миллиардами" ввели его в заблуждение.Телепатическая экспертная оценка. Зато вы его со своими теоретическим экспонентным ростом ввели в страх. Если человек глупый, то ему любой совет здесь не поможет. А умный и так догадается прикинуть сколько у него данных получится в списке родителей. drev3. Вы не умеете либо читать, либо считать. Где Вы видите " При достаточной глубине поиска " ? В Вашем достаточно безграмотно поставленном примере глубина поиска равна 2. От внука до деда. Глубина дерева абсолютно не релевантна в поставленной Вами задаче.Это вы недочитали. Вот изначальное условие от автора: авторЗабыл добавить, что когда в запросе поминается родитель, то он не обязательно непосредственный.Так что родитель я трактовал в этом ключе. Или для вас глубина поиска до 50 - невелика? Ответа насчет алгоритма процедурки - я так и не дождался... а было бы интересно посмотреть. 1. " экспонентным " рассмешили:) У Вас N в квадрате - это экпонента?:) А не полином? :) Вас из какого класса средней школы выгнали?:) 2. Ок, объясняю для второгодников:) Судя по постановке задача очень похожа на сериализацию XML, где атрибуты есть наиболее часто встречающиеся из атрибутов элементов, а пропертиз - остальные. Соответственно, поиск, который он описывал выражается через xpath. Слово "родитель" занято. Если вы меняете условие задачи (а условие, которое вы написали НЕ содержало никаких определений слова "родитель"), то следовало использовать слово "предок" (ancestor). Если вы хотите поставить задачу нормально - опишите xpath (можно словами, если у вас получится) и приложите свой вариант селекта. А затем я напишу вам xpath посложнее и вы попробуете его выразить с помощью одного селекта, ок? После того, как у Вас не получится, я покажу, как это сделать с помощью процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2007, 13:04 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
drevСлово "родитель" занято. Если вы меняете условие задачи (а условие, которое вы написали НЕ содержало никаких определений слова "родитель"), то следовало использовать слово "предок" (ancestor). Если вы хотите поставить задачу нормально - опишите xpath (можно словами, если у вас получится) и приложите свой вариант селекта. А затем я напишу вам xpath посложнее и вы попробуете его выразить с помощью одного селекта, ок? После того, как у Вас не получится, я покажу, как это сделать с помощью процедуры.Неправильная трактовка родителя - у автора. кто девушку кормит, тот ее и танцует. Поэтому я все и излагал в терминах автора. Если не можете привести алгоритм процедурки - то так и признайтесь. Смеятся не буду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2007, 13:12 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Проясню ситуацию по данным: если создавать таблицу родителей, то ее размер будет где-то в 3-5 раз больше таблицы нодов. Т.е. порядка 90M - 150M записей через месяц работы... Не самый аппетитный вариант. BelyЕсли люди не боятся пополнения в млн. строк ежедневно... Люди боятся, еще как боятся! Но выбирать особо не приходится... drevКстати, Sev_Reo, может быть стоит использовать bigint вместо int? Иначе при указанных темпах через 8-16 месяцев у вас могут появится проблемы. Да, именно bigint я и использую, но поскольку для примера это не важно, решил не париться с подробностями. Если запросы являются относительно статическими можно заготовить несколько шаблонов joins, которые будут выполнять необходимую фильтрацию. Увы, не являются В случае динамических и/или глубоких запросов наверно предстоит генерировать нечто процедурное. Например? Просто обозначьте направление, пожалуйста... Если диалект позволяет построить индексы для XPATH запросов, следует исследовать производительность, IMHO. А просветите, пожалуйста, какие диалекты такое позволяют? ............ 2. Судя по постановке задача очень похожа на сериализацию XML, где атрибуты есть наиболее часто встречающиеся из атрибутов элементов, а пропертиз - остальные. Соответственно, поиск, который он описывал выражается через xpath. В точку! Респект! Слово "родитель" занято. Если вы меняете условие задачи (а условие, которое вы написали НЕ содержало никаких определений слова "родитель"), то следовало использовать слово "предок" (ancestor). OK. Виноват, исправлюсь. LRдо кучи: не забыть исследовать возможности покрывающего кластерного индекса (с интенсивностью ~ 1M и 10M записей в день, шансы пережить месяц для такого исследования наверное есть :)) А можно здесь подробнее? 2b&2bСоветовал бы 1) посмотреть на этом форуме сообщения по структуре хранения деревьев (поскольку только внесение одного допольнительного поля в эту структуру CountNodeChilds позволяет существенно (в разы) сократить затраты на обработку дерева) 2) Качнуть в вашу структуру "мусора" в количестве не менее 1 000 000 записей и потренироваться Исключительно полезные советы! Большое человеческое спасибо! До новых встреч! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2007, 13:33 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Кусочек скрипта и упоминание о bigint дает основание подозревать mssql, и, если это mssql2005, то там эта идея(черпать запрашиваемые данные прямо из индекса) развита еще больше (на некластерные индексы), цитирую BOL: ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/udb9/html/973b128d-5114-4d48-8eab-52497b47611e.htmIn SQL Server 2005, a nonclustered index can be extended by including nonkey columns in addition to the index key columns. The nonkey columns are stored at the leaf level of the index b-tree. ... Performance gains are achieved in select operations because the query optimizer can locate all the required column data within the index; the table or clustered index is not accessed. However, having too many included columns may increase the time that is required to perform insert, update, or delete operations to the underlying table or indexed view because of increased index maintenance. то же в другом топике ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/udb9/html/d198648d-fea5-416d-9f30-f9d4aebbf4ec.htmAn index with included nonkey columns can significantly improve query performance when all columns in the query are included in the index either as key or nonkey columns. Performance gains are achieved because the query optimizer can locate all the column values within the index; table or clustered index data is not accessed resulting in fewer disk I/O operations. Note: When an index contains all the columns referenced by the query it is typically referred to as covering the query. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2007, 14:14 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
LRКусочек скрипта и упоминание о bigint дает основание подозревать mssql, и, если это mssql2005, то там эта идея(черпать запрашиваемые данные прямо из индекса) развита еще больше (на некластерные индексы), цитирую BOL:Судя по описанию, аналогичная структура в оракле называется IOT ( Index Organized Table ). Это если рассматривается не только MS, а есть еще и другие БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2007, 14:36 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
BelyСудя по описанию, аналогичная структура в оракле называется IOT Не совсем так, точнее, совсем не так. IOT - это структура, аналогичная кластерному индексу. Описанная LR фича прямого аналога в Oracle не имеет, впрочем, зачем она нужна, я честно говоря так и не понял - году в 2005-м, когда ее анонсировали, было большое обсуждение на эту тему, и тогда я так и не вынес реального примера, где она позволяет добиться чего-то вкусного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2007, 15:06 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Sev_ReoВнимание, вопрос! Что нужно сделать с приведенной структурой и/или какие подходы к реализации самого процесса поиска использовать, чтоб после месяца работы приложения пользователь смог все-таки дождаться ответа на свой вопрос? Напрасно Вы проигнорировали пост: _____________________ С уважением , Андрей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 06:08 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
guest_20040621 Sev_Reo, исходную задачу опишите. Иерархическая модель, мягко говоря, не самая эффективное решение для хранения исторических данных, если они таковыми являются. _____________________ С уважением , Андрей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 06:10 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
Sev_ReoПроясню ситуацию по данным: если создавать таблицу родителей, то ее размер будет где-то в 3-5 раз больше таблицы нодов. Т.е. порядка 90M - 150M записей через месяц работы... Не самый аппетитный вариант. BelyЕсли люди не боятся пополнения в млн. строк ежедневно... Люди боятся, еще как боятся! Но выбирать особо не приходится... drevКстати, Sev_Reo, может быть стоит использовать bigint вместо int? Иначе при указанных темпах через 8-16 месяцев у вас могут появится проблемы. Да, именно bigint я и использую, но поскольку для примера это не важно, решил не париться с подробностями. Если запросы являются относительно статическими можно заготовить несколько шаблонов joins, которые будут выполнять необходимую фильтрацию. Увы, не являются В случае динамических и/или глубоких запросов наверно предстоит генерировать нечто процедурное. Например? Просто обозначьте направление, пожалуйста... Если диалект позволяет построить индексы для XPATH запросов, следует исследовать производительность, IMHO. А просветите, пожалуйста, какие диалекты такое позволяют? ............ 2. Судя по постановке задача очень похожа на сериализацию XML, где атрибуты есть наиболее часто встречающиеся из атрибутов элементов, а пропертиз - остальные. Соответственно, поиск, который он описывал выражается через xpath. В точку! Респект! Слово "родитель" занято. Если вы меняете условие задачи (а условие, которое вы написали НЕ содержало никаких определений слова "родитель"), то следовало использовать слово "предок" (ancestor). OK. Виноват, исправлюсь. LRдо кучи: не забыть исследовать возможности покрывающего кластерного индекса (с интенсивностью ~ 1M и 10M записей в день, шансы пережить месяц для такого исследования наверное есть :)) А можно здесь подробнее? 2b&2bСоветовал бы 1) посмотреть на этом форуме сообщения по структуре хранения деревьев (поскольку только внесение одного допольнительного поля в эту структуру CountNodeChilds позволяет существенно (в разы) сократить затраты на обработку дерева) 2) Качнуть в вашу структуру "мусора" в количестве не менее 1 000 000 записей и потренироваться Исключительно полезные советы! Большое человеческое спасибо! До новых встреч! Извините, что так долго не отвечал. Отвечу в обратном порядке: 1. Судя по Вашим оценкам количества предком, рискну предположить, что у Вас сохраняются средних размеров XML документы, уровня 1000 элементов, более глубокие, чем широкие. Я бы на вашем месте, если у Вас SQL Server 2005, попробовал бы сохранять документы целиком в поле XML type. Если я правильно оценил данные у вас останется одна таблица в 1000 строк в день. Далее по полю XML type я бы попробовал создать от одного до нескольких индексов. (посмотрите ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/udb9/html/f5c9209d-b3f3-4543-b30b-01365a5e7333.htm) и проверил бы производительность на как минимум месячном объёме данных. В этой ситуации Вам не придётся имитировать xpath функциональность. Аналогичные средства есть в Oracle. 2. Если у вас нет подобной функциональности или по каким-то причинам вам она не подходит, Вам придётся эмулировать xpath вручную. Подъём по дереву придётся делать при помощи joins или CTE. Для сложных xpath один селект может оказаться слишком сложным. вам придётся, скорее всего, делать его по частям, скажем вычитывать во временную таблицу и делать join с селектом, имплементирующим следующую часть условий. Если у Вас есть такая возможность и я правило понял задачу - первый путь лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 10:17 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
> Иерархическая модель, мягко говоря, не самая эффективное решение для хранения > исторических данных, если они таковыми являются. И что должно следовать из Вашего глубокомысленного заключения? Задача-то где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 13:04 |
|
||
|
Быстрый сложный поиск по большому дереву
|
|||
|---|---|---|---|
|
#18+
guest_20040621И что должно следовать из Вашего глубокомысленного заключения? Задача-то где? Не совсем понял, какая задача? Sev_ReoЧто нужно сделать с приведенной структурой Если ситуация позволяет изменить описанную структуру хранения, то, возможно, имеет смысл её пересмотреть, чтобы привести её к более реляционному виду. И ничего более. Если свим постом изменил контекст Вашего, извините, не хотел. _____________________ С уважением , Андрей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 13:28 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34656272&tid=1544331]: |
0ms |
get settings: |
6ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
35ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 313ms |

| 0 / 0 |
