使用存在时如何使用Check CONSTRAINT进行查询?

时间:2017-12-03 01:19:53

标签: sql sql-server

我对很多帐户成本表都有很大的看法。这些表有检查CONSTRAINT。它们是每个月建造的。 像这样:

ALTER TABLE [dbo].[book_cost_1204] 
ADD CONSTRAINT [CKT_book_cost_1204] 
CHECK (([billdate] >= '2012-04-01' and [billdate] < '2012-05-01'))

如果我使用此查询:

select * from book_cost where billdate >= '2017-11-01'

它只会使用两个表:book_cost_1711和book_cost_1712。

但是如果我查询另一个表,那么使用exists来查询这个视图:

select * from (another table having account info) a
 where exists (select top 1 from book_cost where billdate>=a.billdate)

通过检查统计信息io,我发现它查询了所有表格。

为什么不使用支票?

我用光标检查每一行,但它太慢了。我也想使用proc,但是 似乎哪里不能用exec?

如何解决?

0 个答案:

没有答案