我正在使用SQL Server 2014,我有一个包含120列和超过3000万行的大表。我的聚集索引位于DATE
类型的列上。
我创建了一个分区函数:
CREATE PARTITION FUNCTION [20yearsDate](date)
AS RANGE RIGHT FOR VALUES (N'2015-07-07T00:00:00.000', N'2015-08-07T00:00:00.000', N'2015-09-07T00:00:00.000', N'2015-10-07T00:00:00.000', N'2015-11-07T00:00:00.000', N'2015-12-07T00:00:00.000', N'2016-01-07T00:00:00.000', N'2016-02-07T00:00:00.000', N'2016-03-07T00:00:00.000', N'2016-04-07T00:00:00.000', N'2016-05-07T00:00:00.000', N'2016-06-07T00:00:00.000'........etc............
(每月一个分区)
现在,当我正在运行WHERE
语句位于date
列(过去3个月)的查询时,它使用在分区方案上分区的非聚集索引:20yearsDate,on专栏:日期。
但问题是优化器使用了所有241个分区!
如果我的where语句是过去3个月,为什么不使用3或4个分区?