为什么使用Row_Number的视图要慢得多

时间:2017-08-05 21:57:57

标签: sql sql-server view

我有几个交叉连接的查询,没有过滤,最终有数千万条记录,但通过正确的过滤,我通常得到200到1000条记录。只要我运行查询,这没有问题,但如果创建一个视图并在视图上应用过滤器,查询只会超时。(超过30秒)

但是如果我在视图中使用ROW_number分区分组,这只是一个问题,如果我从视图中删除它,没问题。 (我也在查询中使用它,与视图中的查询完全相同)

我想这是因为Row_number指望视图中的所有内容都在"其中"应用了filter,但如果我使用filter运行完全相同的命令,但不是视图,则响应时间小于一秒。

我对视图的理解是他们会将视图中的查询与您调用视图时的查询相结合: -

select * from view where id = 100

将转化为

select * from tableCreatedWievFrom where Id = 100

那为什么会有区别?

0 个答案:

没有答案
相关问题