CHECK CONSTRAINT被变量/参数忽略

时间:2012-03-13 10:04:52

标签: variables constraints sql-server-2008r2-express

我正在使用分成几个数据库的数据库,我将其称为“分区”。 每个分区在特定月份保存相同的数据结构。 所有分区顶部的视图为数据检索做了很大的UNION,每个分区的每个表都有一个基于日期范围的CHECK CONSTRAINT,这有助于查询优化器跳过特定的不需要的分区两个日期之间的查询。 到目前为止一切正常。

但是,当我提交一个查询时,假设:WHERE [Date] > @StartDate@StartDate是一个变量,查询计划会显示每个分区都是UNION的一部分。 我找到了一些资源建议更喜欢参数变量,但同样的情况也是如此。 我甚至将查询更改为存储过程,将日期范围作为参数传递,并添加了WITH RECOMPILE提示,没有运气。 发布DBCC FREEPROCCACHE也无济于事。

我正在考虑使用动态查询,连接查询和参数,以便提交文字日期界限,这是我的最佳选择。但这让我真的很不高兴(我想你可以明白为什么)。 此外,即使没有更好的解决方法,我也想至少了解正在发生的事情。

0 个答案:

没有答案