Sql server 连接不起作用的视图的SQL Server索引视图匹配
是否有人有过SQL Server 2008 R2何时能够自动匹配包含查询联接的索引视图(也称为物化视图)的经验 例如视图Sql server 连接不起作用的视图的SQL Server索引视图匹配,sql-server,sql-server-2008,query-optimization,materialized-views,indexed-view,Sql Server,Sql Server 2008,Query Optimization,Materialized Views,Indexed View,是否有人有过SQL Server 2008 R2何时能够自动匹配包含查询联接的索引视图(也称为物化视图)的经验 例如视图 select dbo.Orders.Date, dbo.OrderDetails.ProductID from dbo.OrderDetails join dbo.Orders on dbo.OrderDetails.OrderID = dbo.Orders.ID 无法自动匹配到相同的精确查询。当我使用(noexpand)直接从这个视图中选择时,我实际上得到了一个更快的查询
select dbo.Orders.Date, dbo.OrderDetails.ProductID
from dbo.OrderDetails
join dbo.Orders on dbo.OrderDetails.OrderID = dbo.Orders.ID
无法自动匹配到相同的精确查询。当我使用(noexpand)直接从这个视图中选择时,我实际上得到了一个更快的查询计划,可以扫描索引视图的聚集索引。我可以让SQL Server自动执行此匹配吗?我有很多查询和视图,我不想每次都手动引用索引视图,因为我使用的是OR映射器
我正在使用SQLServer2008R2的企业版
编辑:我找到了解决方案。SQL Server 2008 R2不自动匹配具有2个以上联接的索引视图。这可能会大大降低优化过程的速度
编辑2:在我提出这个问题两年后回顾这一点,我认为我的结论不正确。物化视图匹配是一个非常脆弱的过程,多年来我找不到明确的规则。
当然,以下因素也发挥了作用:
- 连接数
- 谓词的存在
- 视图和查询中的联接顺序
我对你的问题有点模糊;但我认为这会给你你想要的:
SQL Server在查询中使用视图索引的时间受到许多奇怪的、看似任意的条件的限制。此页面记录了SQL Server 2008的这些功能