USE AdventureWorks GO --*************************************************************************** --=========================================================================== -- Test 1: Two roots, two children under a node, 10 levels -- Run CTETestPopulateData1.sql to populate testing data --=========================================================================== -- 1) @GroupID=1, 1023 rows, 10 levels EXEC dbo.GetDescendantsCTE @GroupID=1 --373ms --390ms --313ms -- AVG: 359ms GO -- 2) @GroupID=3, 511 rows, 9 levels EXEC dbo.GetDescendantsCTE @GroupID=3 --313ms --313ms --326ms -- AVG: 317ms GO -- 3) @GroupID=37, 63 rows, 6 levels EXEC dbo.GetDescendantsCTE @GroupID=37 --100ms --80ms --80ms -- AVG: 90ms --*************************************************************************** GO --*************************************************************************** --=========================================================================== -- Test 2: Two roots, three children under a node, 10 levels -- Run CTETestPopulateData2.sql to populate testing data --=========================================================================== -- 1) @GroupID=3, 9841 rows, 9 levels EXEC dbo.GetDescendantsCTE @GroupID=3 --3716ms --3670ms --3843ms -- AVG: 3743ms GO -- 2) @GroupID=21, 3280 rows,8 levels EXEC dbo.GetDescendantsCTE @GroupID=21 -- 1156ms -- 1080ms -- 1173ms -- AVG: 1136ms GO -- 3) @GroupID=75, 1093 rows,7 levels EXEC dbo.GetDescendantsCTE @GroupID=75 -- 466ms -- 466ms -- 470ms -- AVG: 467ms GO -- 4) @GroupID=237, 364 rows,6 levels EXEC dbo.GetDescendantsCTE @GroupID=237 -- 296ms -- 280ms -- 296ms -- AVG: 291ms GO -- 5) @GroupID=2181, 40 rows, 4 levels EXEC dbo.GetDescendantsCTE @GroupID=2181 --63ms --156ms --156ms -- AVG: 125ms GO -- 6) @GroupID=6555, 13 rows, 3 levels EXEC dbo.GetDescendantsCTE @GroupID=6555 --<3ms --*************************************************************************** GO --*************************************************************************** --=========================================================================== -- Test 3: Two roots, 12 children under a node, 4 levels -- Run CTETestPopulateData3.sql to populate testing data --=========================================================================== -- 1) @GroupID=1, 1885 rows, 4 levels EXEC dbo.GetDescendantsCTE @GroupID=1 -- 2420ms,2673ms,2486ms -- AVG: 2526ms GO -- 2) @GroupID=3, 157 rows, 3 levels EXEC dbo.GetDescendantsCTE @GroupID=3 -- 250ms,280ms,343ms -- AVG: 258ms --*************************************************************************** GO --*************************************************************************** --=========================================================================== -- Test 4: Same data as test 2. -- Only query keys in the recursive part --=========================================================================== -- 1) @GroupID=3, 9841 rows, 9 levels EXEC dbo.GetDescendantsCTE2 @GroupID=3 -- 2076ms,2156ms,1936ms -- AVG: 2056ms GO -- 2) @GroupID=21, 3280 rows, 8 levels EXEC dbo.GetDescendantsCTE2 @GroupID=21 -- 846ms,813ms,810ms -- AVG: 823ms --*************************************************************************** GO --*************************************************************************** --=========================================================================== -- Test 5: Same data as test 2. -- Get ancestors --=========================================================================== -- 1) @GroupID=59043, 10 rows, 10 levels EXEC dbo.GetAncestorsCTE @GroupID=59043 -- <3ms --*************************************************************************** GO