Why would that be? I can't seem to make it happen by clearing the cache and
bufferes but it does happen occasionally.
****************************************************
DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS
declare @baseDocumentID int
Set @baseDocumentID = 5
;WITH PrrCTE(nDocumentID,nPrerequisiteFor, Level, baseDocumentID,
basePreReq )
AS
(
-- Anchor Member
SELECT nDocumentID, nPrerequisiteFor, 0, nPrerequisiteFor as
baseDocumentID, nDocumentID as basePreReq
FROM tblPrerequisite
WHERE nPrerequisiteFor = @baseDocumentID -- Start original document
UNION ALL
-- Recursive Member
SELECT
e.nDocumentID, e.nPrerequisiteFor, m.Level+1, m.baseDocumentID,
m.basePreReq
FROM
tblPrerequisite AS e
INNER JOIN PrrCTE m ON e.nPrerequisiteFor = m.nDocumentID
)
-- Using the CTE
SELECT nDocumentID, nPrerequisiteFor,Level, baseDocumentID, basePreReq
FROM PrrCTE
Order by basePreReq,Level
********************************************************
Am I missing something? The query works fine but am confused by the lag
time it occasionally takes.
Thanks,
Tom
--
Erland Sommarskog, SQL Server MVP, esq...@sommarskog.se
Links for SQL Server Books Online:
SQL 2008: http://msdn.microsoft.com/en-us/sqlserver/cc514207.aspx
SQL 2005: http://msdn.microsoft.com/en-us/sqlserver/bb895970.aspx
SQL 2000: http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx
There is no blocking - but the caving would be a possible explanation :)
Thanks,
Tom