我对很多帐户成本表都有很大的看法。这些表有检查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?
如何解决?