Variables 检查被变量/参数忽略的约束

Variables 检查被变量/参数忽略的约束,variables,constraints,sql-server-2008r2-express,Variables,Constraints,Sql Server 2008r2 Express,我使用的是一个被分割成几个数据库的数据库,我称之为“分区”。 每个分区在一个特定的月份内持有相同的数据结构。 所有分区顶部的视图对数据检索执行一个大的联合,每个分区的每个表都有一个基于日期边界的检查约束,这有助于查询优化器跳过两个日期之间某个特定查询不需要的分区。 到目前为止一切正常 但是,当我提交一个查询时,比如:其中[Date]>@StartDate,@StartDate是一个变量,查询计划显示每个分区都是联合的一部分。 我发现一些资源建议选择参数而不是变量,但情况也是如此。 我甚至将查询更

我使用的是一个被分割成几个数据库的数据库,我称之为“分区”。 每个分区在一个特定的月份内持有相同的数据结构。 所有分区顶部的视图对数据检索执行一个大的
联合
,每个分区的每个表都有一个基于日期边界的
检查约束
,这有助于查询优化器跳过两个日期之间某个特定查询不需要的分区。 到目前为止一切正常

但是,当我提交一个查询时,比如:
其中[Date]>@StartDate
@StartDate
是一个变量,查询计划显示每个分区都是
联合的一部分。
我发现一些资源建议选择参数而不是变量,但情况也是如此。
我甚至将查询更改为一个存储过程,将日期边界作为参数传递,并添加了带有重新编译提示的
,但运气不好。
发布一个
DBCC-FREEPROCCACHE
也没有帮助

我正在考虑使用动态查询,将查询和参数连接起来,以便提交文本日期边界,这是我的最佳选择。但这让我很不开心(我想你可以理解原因)。 此外,即使没有更好的解决办法,我也希望至少了解发生了什么