Я искал какой-то способ извлечения данных из таблицы деревьев, как определено ниже.MS SQL server and Trees
Таблица Дерево Определяется как: -
TreeID UniqueIdentifier
TreeParent UniqueIdentifier
TreeCode VARCHAR (50)
TreeDesc VARCHAR (100)
данных некоторые (23k строк), Родитель Refs обратно в идентификатор в таблице
следующая SQL делает все дерево (занимает Arround 2 мин 30)
мне нужно сделать followin г.
1) Визуализация каждого узла дерева с 1 LVL родителем
2) Рендером всех узлов, которые имеют описание, которое соответствует TreeDesc как «SOMETEXT%»
3) оказывают все родительские узлы, которые являются для одного дерева ID ,
Элементы 2 и 3 принимают 2mins30, поэтому это должно быть намного быстрее!
Пункт 1, просто не могу работать, как сделать это с вне убивать SQL или принимая навсегда
любые sugestions бы ПОЛЕЗНЫЕ
Благодаря
Джулиан
WITH TreeCTE(TreeCode, TreeDesc, depth, TreeParent, TreeID)
AS
(
-- anchor member
SELECT cast('' as varchar(50)) as TreeCode ,
cast('Trees' as varchar(100)) as TreeDesc,
cast('0' as Integer) as depth,
cast('00000000-0000-0000-0000-000000000000' as uniqueidentifier) as TreeParent,
cast('00000000-0000-0000-0000-000000000000' as uniqueidentifier) as TreeID
UNION ALL
-- recursive member
SELECT s.TreeCode,
s.TreeDesc,
cte.depth+1,
isnull(s.TreeParent, cast('00000000-0000-0000-0000-000000000000' as uniqueidentifier)),
isnull(s.TreeID, cast('00000000-0000-0000-0000-000000000000' as uniqueidentifier))
FROM pdTrees AS S
JOIN TreeCTE AS cte
ON isnull(s.TreeParent, cast('00000000-0000-0000-0000-000000000000' as uniqueidentifier)) = isnull(cte.TreeID , cast('00000000-0000-0000-0000-000000000000' as uniqueidentifier))
)
-- outer query
SELECT
s.TreeID, s.TreeCode, s.TreeDesc, s.depth, s.TreeParent
FROM TreeCTE s
вы положили индекс на – Robert
я имел такую же проблему вашей таблицы несколько раз, прежде чем: |?. вы _sure_, что вам нужно сделать дерево в сервере SQL вы не можете? просто SELECT строк и рендеринга в простой sc ript (и кешировать результаты)? –