代码之家  ›  专栏  ›  技术社区  ›  usr

连接不起作用的视图的SQL Server索引视图匹配

  •  3
  • usr  · 技术社区  · 16 年前

    例如视图

    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:在我提出这个问题两年后回顾这篇文章,我认为我的结论不正确。物化视图匹配是一个非常脆弱的过程,多年来我找不到明确的规则。

    • 连接数
    • 谓词的存在
    1 回复  |  直到 14 年前
        1
  •  2
  •   RMorrisey    16 年前

    我不太清楚你的问题是什么;但我想这会给你想要的:

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

    SQL Server在查询中使用视图索引的时间受到许多奇怪的、任意的条件的限制。此页为SQL Server 2008记录了它们。

    推荐文章