存储过程中视图的好处

Benefits to views in stored procedures

我试过以不同的方式搜索,但没有找到我的问题的明确答案。 This question 几乎回答了我的问题,但不完全是。

除了明显的可读性差异之外,在存储过程中使用视图还有什么好处:

SELECT 
    * 
FROM 
    view1 
WHERE 
    view1.fdate > @start AND 
    view1.fdate <= @end 

...过度使用链接的 table 列表?

SELECT 
    * 
FROM 
    table1 
    INNER JOIN 
    table2 
        ON  table1.pid = table2.fid 
    INNER JOIN 
    table3 
        ON  table1.pid = table3.fid 
WHERE 
    table1.fdate > @start AND 
    table1.fdate <= @end 

没有区别。在这两种情况下,查询计划都是相同的。查询优化器可以使用索引视图,即使您没有明确使用它(情况 2)

不只是关于您的应用和您。

想想企业数据库,数十个不同的应用程序访问相同的数据,数百个人出于业务目的查询数据。您如何向许多人中的每个人解释如何重组高度规范化的数据?哪个查找字段映射到哪个 table?他们是如何加入的?以及如何授予对数据的只读访问权限,确保某些敏感字段不可访问,w/o 重复一遍?

您,DBA,创建视图。他们将数据非规范化为业务人员、许多应用程序和报告易于处理的关系。您授予 select 视图的权限 w/o 授予对基础 table 的访问权限以隐藏敏感的私有字段。有时您编写视图是因为您厌倦了在午夜被调用,因为数据库是 'down' 因为来自会计的约翰尼是 运行 笛卡尔连接。