Sql-Server
使用自連接創建索引視圖
我使用
SQL Server 2008 R2
並知道Indexed View
不能自我加入。我有一個具有 Column 的樹表,
ID
我ParentID
需要在該表上創建索引視圖,並在每個記錄和父記錄之間進行自連接。我可以在這個視圖中模擬自我加入嗎?編輯
我的表結構是:
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 等分配文件夾的結構的樹結構。