2011-02-11 55 views
1

我有2個表,Item和ItemDetails。通常,對此數據的任何查詢都是通過Items_join_ItemDetails視圖執行的,該視圖將公共ItemID字段上的兩個表連接起來。加入SQL Server索引性能

當前ItemDetails在(Date,ItemID)上有一個聚集索引,而在ItemID上有一個非聚集索引。項目在ItemID上有一個聚集索引。

當查看查詢時,它幾乎總是針對日期範圍,這就是爲什麼聚集索引在ItemDetails的Date上。但是,這意味着該視圖必須使用ItemDetails的非羣集ItemID索引進行連接。

如果我切換ItemDetails的聚集索引和非聚集索引,性能會更好嗎?我可以看到這將如何幫助連接操作,但是我也可以看到它將如何影響日期篩選查詢。

+0

請問您可以添加表格+視圖嗎? – gbn 2011-02-11 17:35:03

回答

3

聚集索引超過2列,因此ItemID上的連接應來自此索引。 ItemID上的NC索引可能未被使用,至少對於此查詢而言。

更重要的是確保indexes are covering:所有需要的列都在索引中。

你有任何性能問題?

我們還需要表格和視圖定義來提出進一步的建議。