2012-07-19 51 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的索引视图。您可以在视图上设置聚集索引,以达到最快的性能,并且看起来订单和库存项目都位于同一个“表格”中,无需进行连接。结果将会是对数据有点非规范化的看法。

当然,索引视图有许多限制,但允许内部联接。我经常使用索引视图,它们可以非常有用。这里有一个插入/更新/删除性能的考虑因素,因为每个操作都需要更新视图。但是,这可能是值得的。

相关问题