我有一个SSRS报告使用的存储过程。此存储过程使用视图来获取数据并根据输入参数应用过滤器。 以此视图为例:
CREATE VIEW myview as
select a,b,c,d
from t
join u on t.id=u.id
join v on v.id=t.id
在存储过程中,它将像这样使用:
select * from myview where a='value' and b='value'
当数据庞大时,这种方法会导致性能下降吗?是否首先执行视图以获取所有数据然后进行过滤? 如果我在存储过程中直接使用如下所示的查询,它会对性能产生任何影响吗?
select a,b,c,d
from t
join u on t.id=u.id
join v on v.id=t.id
where a='value' and b='value'
我采用第一种方法的主要原因是可维护性,因为查询非常大,我在存储过程中使用动态查询。