Sql-Server

使用自連接創建索引視圖

  • November 23, 2016

我使用SQL Server 2008 R2並知道Indexed View不能自我加入。

我有一個具有 Column 的樹表,IDParentID需要在該表上創建索引視圖,並在每個記錄和父記錄之間進行自連接。我可以在這個視圖中模擬自我加入嗎?

編輯

我的表結構是:

SAM.Detail (DetailID Int, ParentDetailID Int, Quantity Int, ...)

我的查詢是:

Select A.DetailID,
      A.Quantity - SUM(B.Quantity) as RemainQuantity,
      COUNT_BIG(*) as CountBig
From SAM.Detail A
inner join SAM.Detail B ON B.ParentDetailID = A.DetailID
Group By A.DetailID, A.Quantity

如果您只需要加快查詢速度,則可以創建以下索引視圖:

Select ParentDetailID ,
      SUM(Quantity) as RemainQuantity,
      COUNT_BIG(*) as CountBig
From SAM.Detail 
Group By ParentDetailID 

您可以將它加入到 Detail 表中,您的查詢可能會執行得更快。

我個人建議你可以看看什麼是左連接、內連接和右連接。

您可以通過搜尋相關的keyworkds或訪問以下網頁閱讀詳細資訊

http://www.w3schools.com/sql/sql_join_right.asp

https://stackoverflow.com/questions/2647150/outer-join-for-parent-child-chain

在這種情況下,如果您的子記錄必須有父 ID 並且所有父 ID 不為空,則右連接更合適

內連接下不能顯示父 ID 為空或父記錄沒有子的子記錄。

請注意,如果加入 self 表的右連接永遠持續,則可以模擬模擬 Windows 或 Mac OSX 等分配文件夾的結構的樹結構。

引用自:https://dba.stackexchange.com/questions/23622