У меня есть следующий рекурсивный CTE
WITH relatedpages (custompageid, relatedcustompageid, [level], [path]) AS
(
SELECT
custompageid AS custompageid,
relatedcontentid AS relatedcustompageid,
1 AS [level],
CAST((CAST(custompageid AS VARCHAR) + n' ' + CAST(relatedcontentid AS VARCHAR)) AS VARCHAR) AS [path]
FROM
custompagerelatedcontent related
WHERE
related.custompageid = 1913
UNION ALL
SELECT
subrelatedpages.relatedcustompageid AS custompageid,
subrelated.relatedcontentid AS relatedcustompageid,
subrelatedpages.level + 1 AS [level],
CAST(subrelatedpages.path + n' ' + CAST(subrelated.relatedcontentid AS VARCHAR) AS VARCHAR) AS [path]
FROM
relatedpages subrelatedpages
INNER JOIN
custompagerelatedcontent subrelated ON subrelatedpages.relatedcustompageid = subrelated.custompageid
WHERE
subrelatedpages.path NOT LIKE n'%' + CAST(subrelated.relatedcontentid AS VARCHAR) + n'%'
)
SELECT
custompageid,
relatedcustompageid,
[level],
[path]
FROM
relatedpages
ORDER BY
level
Немного трудно читать, но вот график и таблица результатов
У меня есть графоподобные данные, которые я обрабатываю с помощью столбца path
, чтобы избежать циклов .
Но как узнать, выполняет ли SQL Server поиск в ширину или в глубину поиск?