【问题标题】:What is the use of views in oracle? [closed]oracle中的视图有什么用? [关闭]
【发布时间】:2014-11-21 09:19:29
【问题描述】:

当我可以简单地编写一个选择查询时,为什么我需要创建一个视图? 例如

/
 CREATE OR REPLACE VIEW testview AS SELECT empno,ename,sal FROM emp;
/

为什么我不能写一个简单的选择查询,例如

/
SELECT empno,ename,sal FROM emp;
/

视图的实际用途是什么。在哪些场景中使用了视图?

【问题讨论】:

标签: sql oracle plsql views


【解决方案1】:

Oracle 视图提供了一些引人注目的优势。其中包括:

  • 正在使用的代码的通用性。由于视图基于一组常见的 SQL,这意味着当它被调用时,它不太可能需要解析。这是因为调用的基本底层 SQL 始终相同。但是,由于您可以在调用视图时添加额外的 where 子句,因此您仍然需要使用绑定变量。没有绑定变量的附加 where 子句仍然会导致硬解析!

  • 安全。长期以来,视图一直用于隐藏实际包含您正在查询的数据的表。此外,视图可用于限制给定用户有权访问的列。在不太复杂的数据库上使用视图来保证安全性可能不是一件坏事。随着数据库变得越来越复杂,该解决方案变得越来越难以扩展,因此需要其他解决方案。

  • 谓词推送。 Oracle 支持将谓词推送到给定视图中。

  • 性能。应该使用它们而不是表来加快执行速度。

【讨论】:

  • 关于性能我不同意。为什么视图应该比常规选择更快?唯一的原因可能是:当您选择一个视图时,Select 语句总是相同的,Oracle 可以重用现有的执行计划或存储在结果缓存中的任何数据。但是,当您多次运行相同的常规选择语句时,这也适用。所以视图和常规选择之间没有区别。
【解决方案2】:

视图的另一个用途是您可以在它们后面存储复杂的查询。例如,如果您需要查询来自多个表的数据,那么一次创建一个视图会更容易,这样下次您需要该数据时,您就不必编写查询来再次连接这些表。相反,您可以只查询视图。

顺便说一句,视图不是 Oracle 的东西,它们在许多(如果不是全部)RDBM 系统中都可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 2014-10-14
    相关资源
    最近更新 更多