是否有人有经验SQL Server 2008 R2能够自动匹配包含连接到查询的索引视图(也称为实体视图)?

例如视图

select dbo.Orders.Date, dbo.OrderDetails.ProductID
from dbo.OrderDetails
join dbo.Orders on dbo.OrderDetails.OrderID = dbo.Orders.ID

不能自动与相同的查询匹配。当我直接从此视图中选择 with (noexpand) 实际上,我得到了一个更快的查询计划,可以在索引视图的群集索引上进行扫描。我可以让SQL Server自动执行此匹配吗?我有很多疑问和视图,我不想每次都要手动参考索引视图,因为我使用或映射器。

我是SQL Server 2008 R2的企业版。

编辑:我找到了解决方案。 SQL Server 2008 R2不匹配索引视图,而自动加入超过2个。可能会过多地减慢优化过程。

编辑2:在我创建问题后的两年后回顾一下,我认为我的结论是不正确的。实现的视图匹配是一个非常脆弱的过程,这些年来,我几年来无法找到明确的规则。

当然,以下角色发挥作用:

  • 连接数
  • 存在谓词
  • 在视图和查询中加入订单
有帮助吗?

解决方案

我对您的问题的确切问题有些模糊;但是我认为这将为您提供您想要的东西:

http://msdn.microsoft.com/en-us/library/ms181151.aspx

当SQL Server将在查询中使用视图索引时,有很多奇怪的,任意的观察条件限制。此页面将它们记录为SQL Server 2008。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top