使用where子句从视图vs直接select语句进行过滤

时间:2013-10-25 10:12:14

标签: sql sql-server stored-procedures reporting-services sql-server-2012

我有一个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'

我采用第一种方法的主要原因是可维护性,因为查询非常大,我在存储过程中使用动态查询。

0 个答案:

没有答案