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.GetDescendantsLoop @GroupID=1 -- 203ms -- 233ms -- 220ms -- AVG: 214ms GO -- 2) @GroupID=3, 511 rows, 9 levels EXEC dbo.GetDescendantsLoop @GroupID=3 -- 156ms -- 173ms -- 170ms -- AVG: 166ms GO -- 3) @GroupID=37, 63 rows, 6 levels EXEC dbo.GetDescendantsLoop @GroupID=37 -- 63ms,63ms,63ms -- AVG: 63ms --*************************************************************************** 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.GetDescendantsLoop @GroupID=3 -- 1569ms -- 1640ms -- 1593ms -- AVG: 1601ms GO -- 2) @GroupID=21, 3280 rows, 8 levels EXEC dbo.GetDescendantsLoop @GroupID=21 -- 733ms -- 673ms -- 703ms -- AVG: 703ms GO -- 3) @GroupID=75, 1093 rows,7 levels EXEC dbo.GetDescendantsLoop @GroupID=75 -- 296ms -- 296ms -- 326ms -- AVG: 306ms GO -- 4) @GroupID=237, 364 rows,6 levels EXEC dbo.GetDescendantsLoop @GroupID=237 -- 203ms -- 203ms -- 203ms -- AVG: 203 ms GO -- 5) @GroupID=2181,40 rows, 4 levels EXEC dbo.GetDescendantsLoop @GroupID=2181 -- 46ms -- 46ms -- 46ms -- Avg: 46ms GO -- 6) @GroupID=6555,13 rows, 3 levels EXEC dbo.GetDescendantsLoop @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.GetDescendantsLoop @GroupID=1 -- 250ms,266ms,250ms -- AVG: 255ms GO -- 2) @GroupID=3, 157 rows, 3 levels EXEC dbo.GetDescendantsLoop @GroupID=3 -- 76ms, 80ms, 76ms -- AVG: 77ms --*************************************************************************** GO --*************************************************************************** --=========================================================================== -- Test 4: Same data as test 2. -- Only query keys in the recursive part --=========================================================================== -- 1) @GroupID=3, 9841 rows, 9 levels EXEC dbo.GetDescendantsLoop2 @GroupID=3 -- 1393ms,1313ms,1500ms -- AVG: 1402ms GO -- 2) @GroupID=21, 3280 rows, 8 levels EXEC dbo.GetDescendantsLoop2 @GroupID=21 -- 546ms,643ms,453ms -- AVG: 547ms --*************************************************************************** GO --*************************************************************************** --=========================================================================== -- Test 5: Same data as test 2. -- Get ancestors --=========================================================================== -- 1) @GroupID=59043, 10 rows, 10 levels EXEC dbo.GetAncestorsLoop @GroupID=59043 -- <3ms --*************************************************************************** GO