Sql server 分区视图筛选器无法正常工作
我有下一个分区视图:vwSalesOutH。它由不同数据库中几个名为“SalesOutH”的表组成 当我使用下一个查询时,它工作正常,通过一个表VWSALLESOUTH进行搜索:Sql server 分区视图筛选器无法正常工作,sql-server,partitioned-view,Sql Server,Partitioned View,我有下一个分区视图:vwSalesOutH。它由不同数据库中几个名为“SalesOutH”的表组成 当我使用下一个查询时,它工作正常,通过一个表VWSALLESOUTH进行搜索: select vwSalesOutH.* from vwSalesOutH inner join DatesImport on vwSalesOutH.DBTypeId=DatesImport.DBTypeId and vwSalesOutH.CustId=Dat
select vwSalesOutH.*
from vwSalesOutH
inner join DatesImport on vwSalesOutH.DBTypeId=DatesImport.DBTypeId and
vwSalesOutH.CustId=DatesImport.CustId
where vwSalesOutH.DBTypeId=2 and
vwSalesOutH.Date>='2017-01-01 00:00:00' and
vwSalesOutH.Date<='2017-01-25 00:00:00';
当我使用下一个查询时,在块“where”中使用了相同的日期,我遇到了问题-搜索是按分区视图中的所有表进行的:
select vwSalesOutH.*
from vwSalesOutH
inner join DatesImport on vwSalesOutH.DBTypeId=DatesImport.DBTypeId and
vwSalesOutH.CustId=DatesImport.CustId
where vwSalesOutH.DBTypeId=2 and
vwSalesOutH.Date>=DatesImport.Fact_Start and
vwSalesOutH.Date<=DatesImport.Fact_End;
您能给我一些建议来修复第二个查询吗?我遇到了同样的问题,问题似乎是除非分区值作为常量(非联接,非变量)提供,否则优化程序无法识别要使用的分区,而是扫描所有表 即使使用选项(重新编译),对连接列的筛选也不会转到单表查找
使用带有选项(重新编译)的变量进入单表搜索。尝试将执行计划粘贴到。(免责声明:这是我公司的网站。)
select vwSalesOutH.*
from vwSalesOutH
inner join DatesImport on vwSalesOutH.DBTypeId=DatesImport.DBTypeId and
vwSalesOutH.CustId=DatesImport.CustId
where vwSalesOutH.DBTypeId=2 and
vwSalesOutH.Date>=DatesImport.Fact_Start and
vwSalesOutH.Date<=DatesImport.Fact_End;
(6179 row(s) affected)
Table 'DatesImport'. Scan count 1, logical reads 2, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Workfile'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'SalesOutH'. Scan count 5, logical reads 452, physical reads 0, read-ahead reads 43, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'SalesOutH'. Scan count 5, logical reads 584, physical reads 0, read-ahead reads 1, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'SalesOutH'. Scan count 5, logical reads 55717, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'SalesOutH'. Scan count 5, logical reads 12752, physical reads 0, read-ahead reads 3, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'SalesOutH'. Scan count 5, logical reads 11834, physical reads 0, read-ahead reads 8, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'SalesOutH'. Scan count 5, logical reads 11097, physical reads 0, read-ahead reads 10, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'SalesOutH'. Scan count 5, logical reads 51, physical reads 0, read-ahead reads 13, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.