我尝试过以不同的方式搜索,但未能找到我问题的明确答案。 This question几乎回答了我的问题,但并不完全。
除了明显的可读性差异外,在存储过程中使用视图还有什么好处:
SELECT
*
FROM
view1
WHERE
view1.fdate > @start AND
view1.fdate <= @end
...使用链接表列表?
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
答案 0 :(得分:2)
不是关于你的应用和你的全部。
思考企业数据库,数十个不同的应用程序访问相同的数据,以及数百个人出于业务目的查询数据。您如何向众多个体中的每一个人解释如何重新组合高度标准化的数据?哪个查找字段映射到哪个表?他们是如何加入的?如何授予对数据的只读访问权限,确保无法访问某些敏感字段,而不重复自己?
您,DBA,创建VIEW。它们将数据非规范化为易于处理的业务人员,许多应用程序和报告的关系。您授予视图的选择权限,但不授予对基础表的访问权限以隐藏敏感的私有字段。有时候你会写一些观点,因为你已经厌倦了在午夜被召唤,因为数据库“失败”导致约翰尼从会计运行笛卡尔联合。
答案 1 :(得分:0)
没有区别。在两种情况下,查询计划都是相同的。即使您未明确使用(在案例2中)
,查询优化器也可以使用索引视图