我正在尝试创建一个分区视图,但是我的执行计划显示它仍在访问两个基础表。
为什么我的查询仍然访问两个基础表,然后将它们连接起来?
最有可能的问题是您的约束与您的条件CHECK
不匹配。WHERE
您的检查约束采用以下形式:
(datepart(year,[StockDate])=(2016))
您的WHERE
情况是:
StockDate = '20160101'
DATEPART
更改您的检查约束以使用完整日期(此外,对于这样一个简单的过滤器,无需使用函数-- )。以下是 2016 年的表格:
[StockDate] >= '01/01/2016' AND [StockDate] <= '12/31/2016'
对其他表重复此操作,更改两个谓词中的年份以匹配表的年份。
请注意,上面的语法没有说明时间组件,因为所讨论的字段是DATE
数据类型。如果数据类型是DATETIME
,则范围的结尾需要表示为:
'12/31/2016 23:59.59.997'
有关分区视图的更多信息,请参阅使用分区视图的 MSDN 页面。