ORACLE - 哪个更好地生成记录、视图、SP 或函数的大型结果集
Posted
技术标签:
【中文标题】ORACLE - 哪个更好地生成记录、视图、SP 或函数的大型结果集【英文标题】:ORACLE - Which is better to generate a large resultset of records, View, SP, or Function 【发布时间】:2016-05-17 04:42:36 【问题描述】:我最近使用 Oracle 数据库生成一些报告。我需要的是获取特定记录的结果集(仅 SELECT 语句),有时是大记录,用于在 excel 文件中生成报告。
起初,报表是在视图中查询的,但其中一些很慢(有一些复杂的子查询)。我被要求提高性能并修复一些字段映射。我也想把事情整理一下,因为当我查询View时,我必须专门调用正确的列名。我想将数据工作分离到数据库中,而 Web 应用程序仅用于传递参数并调用正确的结果集。
我是 Oracle 的新手,那么执行此类任务哪个更好?使用 SP 还是函数?或者在什么情况下 View 可能更好?
【问题讨论】:
【参考方案1】:在视图、SP 或函数中编译 SQL 没有区别。重要的是 SQL 本身。
【讨论】:
谢谢。我意识到查询的性能取决于查询结构本身。但是,我想创建一个具有特定目的的模块化或查询块,并将选择查询与我的网络应用程序分开。 对于模块化方法,我的首选是表函数【参考方案2】:只要您能够通过视图满足您的要求,它们应该是一个不错的选择。如果您打算将查询分解为多个查询以获得更好的性能,那么您应该使用存储过程。如果您决定使用存储过程,那么建议创建一个包并将所有存储过程捆绑在包中。如果您的问题是性能问题,那么可能没有针对相同问题的灵丹妙药解决方案。您将不得不处理您的查询和设计。
【讨论】:
谢谢。在对文档进行一些研究并得到您的回答的支持后,我认为包中的程序可能适合我的工作。【参考方案3】:如果问题是由于复杂的 SELECT 查询(查询)导致的性能问题,您可以考虑调整查询。您通常会发现 15 到 20 年前编写的查询,它们没有使用 Oracle 在更新版本中引入的功能和技术(即使组织花费大笔资金购买更新版本 - 使其成为浪费钱)。老实说,如果您是 Oracle 的新手,这对您来说可能是一项艰巨的任务。此外,在很多年前,像您这样的人可能已经编写了一些缓慢的查询 - 在他们有机会了解很多有关 Oracle 并获得相关经验之前。
另外,如果报表不需要使用基础表的绝对当前状态(例如,如果“昨天工作日结束时表中的内容”是可以接受的),您可以创建物化视图。它不会比常规视图更快地运行,但它可以在一夜之间运行(比如说),或者每六个小时运行一次,或者其他任何时间——这样进一步的报告处理就不必等待查询完成。这是物化视图的主要用途之一。
祝你好运!
【讨论】:
以上是关于ORACLE - 哪个更好地生成记录、视图、SP 或函数的大型结果集的主要内容,如果未能解决你的问题,请参考以下文章
联发科sp flashtool刷机工具firmware upgrade和download有何区别?哪个更好