2012-07-19 46 views
0

我使用SQL Server 2008的您可以在SQL Server的索引中包含關係數據嗎?

我有兩個表是這樣的:

的OrderItems

OrderItemID 
InventoryItemID 

和:

InventoryItems

InventoryItemID 
ItemCode 

我的查詢計劃顯示很多時間被吸引到加入InventoryItemID s得到ItemCode爲每個訂單項目。

我已經有一個非聚集索引,包括這兩個表上的列,但希望更快 - 我可以將ItemCode關係ItemCode「導入」OrderItems表索引嗎?

+0

看看你的執行計劃,是否在外鍵上使用idex?如果它是複合索引的一部分並且不是第一個字段,則它可能不會使用現有索引,並且可能需要爲FK創建一個單獨的索引。 – HLGEM 2012-07-19 20:48:04

回答

1

不,您不能從另一個表中INCLUDE列。然而,一個「盒子外」的建議是創建一個連接OrderItems和InventoryItems的索引視圖。您可以在視圖上設置聚集索引,以達到最快的性能,並且看起來訂單和庫存項目都位於同一個「表格」中,無需進行連接。結果將會是對數據有點非規範化的看法。

當然,索引視圖有許多限制,但允許內部聯接。我經常使用索引視圖,它們可以非常有用。這裏有一個插入/更新/刪除性能的考慮因素,因爲每個操作都需要更新視圖。但是,這可能是值得的。

相關問題