创建视图&在数据库中的表现。,

时间:2010-01-28 10:50:48

标签: oracle

如果创建了数千个视图,是否会妨碍数据库性能。我的意思是在oracle中创建数千个视图有任何问题。请解释一下,因为我是这个领域的新人......我正在使用甲骨文......

4 个答案:

答案 0 :(得分:2)

这些观点的简单存在不应该损害性能。但是,一旦这些观点开始被使用,可能会对性能产生负面影响。 Oracle试图“记住”它看到的每个语句的计划,但它通过比较源代码(SQL)来比较语句。您的数千个视图都将以不同的名称命名,因为您不能拥有多个具有相同名称的视图,因此每次使用其中一个视图时,Oracle将不得不对SQL进行全面解析,即使它是基本为

SELECT * FROM VIEW_1;

SELECT * FROM VIEW_2;

所有这些重新解析肯定需要一些时间。

这些观点有何不同?我认为退一步考虑其他可能性可能是一个好主意。我要问的问题包括

  1. 这里要完成什么?
  2. 为什么需要数以千计的不同观点?
  3. 是否有其他方法可以在不创建所有这些视图的情况下完成需要完成的工作?
  4. 我不知道1和2的答案,但我有理由相信#3的答案是“是”。

    祝你好运。

答案 1 :(得分:0)

查看与创建它的选择一样重,但Oracle加载平衡和单选不会损害数据库。如果您有数千个并发选择,那么您可能会遇到问题。视图的数量并不重要,但它们的重要程度以及您使用它们的程度。

您实际上需要显示视图代码并告诉您实际上要执行的操作。

答案 2 :(得分:0)

  

Oracle视图是一个封装   复杂的查询,必须与之一起使用   关心。以下是关键事实   记住:

     

视图不是为了改进SQL   性能。当你需要的时候   封装SQL,你应该放置它   在存储过程中而不是   使用视图。视图隐藏了复杂性   制作它的基础查询   对于没有经验的程序员来说更容易   和最终用户制定查询。   视图可用于调优查询   提示,只要视图是   总是在适当的环境中使用。

source: Guard against performance issues when using Oracle hints and views

答案 3 :(得分:0)

如果优化器足够智能,则视图不应影响性能。我记得当Views损害性能时,其他数据库引擎的情况。与许多表现案例一样 - 我建议衡量你的具体案例。