Допустим, что таблица 'Items' (около 1000 записей) имеет следующие поля:SQL Server 2012 IsDescendantOf МЕДЛЕННО
ItemID (smallint, primary key)
ItemHierarchyID (HierarchyID)
ItemName (varchar(max))
запроса (только для целей тестирования) занимает около 0 секунд:
SELECT A.*
FROM Items A, Items B
WHERE A.ItemID = B.ItemID
(output: 1011 records)
Вместо этого другого занимает около 25 секунд :
SELECT A.*
FROM Items A, Items B
WHERE A.ItemHierarchyID.IsDescendantOf(B.ItemHierarchyID) = 1
(output: 1035 records)
Я добавляю, что многие из этих записей имеют ItemHierarchyID = NULL.
Почему IsDescendantOf настолько медленный?
Проголосовало за переход на DBA.SE –