ORACLE-哪一个更适合生成记录、视图、SP或函数的大型结果集



我最近使用Oracle数据库生成一些报告。我需要的是获得特定记录的结果集(只有SELECT语句),有时是大型记录,用于在excel文件中生成报告。

起初,报告是在视图中查询的,但有些报告速度较慢(有一些复杂的子查询)。我被要求提高性能,还修复了一些字段映射。我还想整理一下,因为当我对View进行查询时,我必须特别调用正确的列名。我想将数据工作分离到数据库中,而web应用程序仅用于传递参数并调用正确的结果集。

我是Oracle的新手,那么做这种任务哪个更好呢?使用SP还是函数?或者在什么情况下View可能更好?

无论是在视图、SP还是函数中编译SQL,都没有区别。SQL本身才是最重要的。

只要您能够满足视图的需求,它们应该是一个不错的选择。如果您打算将查询分解为多个查询以获得更好的性能,那么您应该选择存储过程。如果您决定使用存储过程,那么建议创建一个包,并将所有存储过程捆绑在包中。如果你的问题是性能,那么可能没有同样的银弹解决方案。您将不得不处理您的查询,并为此进行设计。

如果问题是由于复杂的SELECT查询引起的性能,则可以考虑调整查询。通常,您会发现15-20年前编写的查询没有使用Oracle在较新版本中引入的功能和技术(即使组织花了大笔钱购买较新版本,也会浪费金钱)。老实说,如果你是Oracle的新手,这对你来说可能是一项艰巨的任务;此外,一些缓慢的查询可能是像你这样的人在很多年前写的——在他们有机会了解很多关于Oracle的知识并有经验之前。

另一件事是,如果报告不需要使用底层表的绝对当前状态(例如,如果"昨天工作日结束时表中的内容"是可以接受的),则可以创建物化视图。它的工作速度不会比常规视图快,但它可以在一夜之间运行,或者每六个小时运行一次,或者其他什么,这样就不必等待查询完成进一步的报告处理。这是物化视图的主要用途之一。

祝你好运!

最新更新