【发布时间】:2012-09-12 18:05:58
【问题描述】:
如果所有 SQL 都在做 SELECT,那么使用视图与 SPROC 相比是否有优势。 从我的角度来看,它纯粹是组织性的,但我想知道当 SPROC 所做的只是 SELECT 并且没有写入数据库时,是否有充分的理由使用视图。 我使用的是 Sql Server 2008,但这可能适用于其他 SQL Server 产品
【问题讨论】:
标签: sql stored-procedures view
如果所有 SQL 都在做 SELECT,那么使用视图与 SPROC 相比是否有优势。 从我的角度来看,它纯粹是组织性的,但我想知道当 SPROC 所做的只是 SELECT 并且没有写入数据库时,是否有充分的理由使用视图。 我使用的是 Sql Server 2008,但这可能适用于其他 SQL Server 产品
【问题讨论】:
标签: sql stored-procedures view
视图旨在抽象出基础表的详细信息,并为数据提供一个窗口,以您希望的方式显示。
存储过程实现特定任务,并且可以选择获取任务执行期间使用的参数。
如果您想通过从用户那里获取参数来运行特定任务,那么您可以创建一个存储过程。
如果您只想以给定方式公开数据并在需要时将进一步过滤留给用户,您可以创建一个视图。
【讨论】:
select * from v_your_view where your_column = 1
除了为特定角色封装特定数据的安全优势之外,还有能够创建index on the view 的优势。
以下是一些特定的性能优势,来自 MSDN 链接:
- 可以预先计算聚合并将其存储在索引中,以最大限度地减少查询执行期间昂贵的计算。
- 可以预先加入表并存储生成的数据集。
- 可以存储连接或聚合的组合。
【讨论】: