Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 分区视图筛选器无法正常工作_Sql Server_Partitioned View - Fatal编程技术网

Sql server 分区视图筛选器无法正常工作

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

我有下一个分区视图:vwSalesOutH。它由不同数据库中几个名为“SalesOutH”的表组成

当我使用下一个查询时,它工作正常,通过一个表VWSALLESOUTH进行搜索:

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.