【问题标题】:If all SQL is doing is SELECT, is there an advantage to using a view vs a SPROC如果所有 SQL 都在做 SELECT,那么使用视图与 SPROC 是否有优势
【发布时间】:2012-09-12 18:05:58
【问题描述】:

如果所有 SQL 都在做 SELECT,那么使用视图与 SPROC 相比是否有优势。 从我的角度来看,它纯粹是组织性的,但我想知道当 SPROC 所做的只是 SELECT 并且没有写入数据库时​​,是否有充分的理由使用视图。 我使用的是 Sql Server 2008,但这可能适用于其他 SQL Server 产品

【问题讨论】:

    标签: sql stored-procedures view


    【解决方案1】:

    视图旨在抽象出基础表的详细信息,并为数据提供一个窗口,以您希望的方式显示。

    存储过程实现特定任务,并且可以选择获取任务执行期间使用的参数。

    如果您想通过从用户那里获取参数来运行特定任务,那么您可以创建一个存储过程。

    如果您只想以给定方式公开数据并在需要时将进一步过滤留给用户,您可以创建一个视图。

    【讨论】:

    • -1:您可以将 where 子句传递给视图:select * from v_your_view where your_column = 1
    • @DanielHilgarth,这就是我所说的“用户提供过滤器”的意思,在存储过程的情况下,您已经决定过滤哪些列并且用户只提供值对于那些过滤器。
    • 这种说法很含糊。也许你可以编辑它?这样我就可以删除反对票。
    • @DanielHilgarth,编辑了不明确的部分。
    【解决方案2】:

    除了为特定角色封装特定数据的安全优势之外,还有能够创建index on the view 的优势。

    以下是一些特定的性能优势,来自 MSDN 链接:

    • 可以预先计算聚合并将其存储在索引中,以最大限度地减少查询执行期间昂贵的计算。
    • 可以预先加入表并存储生成的数据集。
    • 可以存储连接或聚合的组合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-15
      • 2011-05-12
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多