存储过程中视图的好处
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' 因为来自会计的约翰尼是 运行 笛卡尔连接。
我试过以不同的方式搜索,但没有找到我的问题的明确答案。 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' 因为来自会计的约翰尼是 运行 笛卡尔连接。