1

我正在尝试创建一个分区视图,但是我的执行计划显示它仍在访问两个基础表。

SQL小提琴在这里

为什么我的查询仍然访问两个基础表,然后将它们连接起来?

4

1 回答 1

0

最有可能的问题是您的约束与您的条件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 页面。

于 2016-04-05T01:01:53.720 回答