給定一個表(AccountId,ParentId NULL),我們希望能夠快速找到: 1.主父ID(parentId爲null的accountId)。 2.所有孩子給定的帳戶ID。實現CTE或以其他方式提高性能
使用CTE,這相當容易。但是,我們無法將CTE保存在索引視圖中,這會損害性能。我們已經嘗試了一些其他的想法,比如將路徑(id1/id2/id3)保存在另一個字段中,但是這感覺很亂。
我們想到了一個觸發器,它可以在每一行上保存「主」ID,但我們不確定在鏈中間如何工作(1擁有2擁有3,但是2轉移到7)。它也不能解決「查找所有孩子」的查詢。
有什麼想法?我們正在使用SQL 2008 R2,但可以遷移到SQL 2012.
我不認爲SQL Server 2012有任何功能,這將有助於這裏。然而,如果沒有更多的上下文來理解爲什麼實現CTE或創建索引視圖(什麼?)將成爲解決性能問題的神奇答案,那麼這非常困難。你能給我們一些關於表結構,索引,數據量和你運行的查詢太慢的想法嗎? – 2012-03-13 00:51:56
您是否擁有ParentId的索引範圍? – wtjones 2012-04-04 18:25:07