我有一個存儲論壇帖子的SQL表。每條記錄都有一個ParentID,它是另一條記錄的ID。如果它是空的,這意味着它是一個主要的論壇線程,因此沒有父記錄。每篇文章可以有多個級別的孩子。我正在尋找一個有效地通過子記錄再次發現最後創建的函數(每個記錄都有一個'Created'字段)的函數。在層次表中查找最後一條記錄的最有效方式
我的存儲過程列出了屬於特定父級的記錄,但它非常耗費CPU時間,並且在列出主論壇線程和顯示最後一個答覆的日期時無法使用。
如果有幫助,這裏是表的基本結構:
CREATE TABLE [dbo].[ForumThreads](
[ForumThreadID] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
[ForumID] [numeric](18, 0) NULL,
[ParentID] [numeric](18, 0) NULL,
[PostSubject] [nvarchar](500) NULL,
[PostBody] [nvarchar](max) NULL,
[Created] [datetime] NULL,
[CreatedBy] [numeric](18, 0) NULL
);
您是否嘗試過遞歸查詢?這裏是一個例子:http://technet.microsoft.com/en-us/library/ms186243(v=sql.105).aspx –
我假設你是指在給定的ForumThreadID *下創建*的最後一個孩子? – Bohemian
你認爲正確@Bohemian – Osprey