我有一些查询会运行很长时间(20-30分钟)。如果同时启动大量查询,连接池将很快耗尽。

是否可以将长时间运行的查询包装到一个语句(过程)中,该语句将把通用查询的结果存储到临时表中,以终止连接,并在以后按需获取(轮询)结果?

编辑:查询和数据结构已优化,并且“检查索引和执行计划”之类的提示对我不起作用。我正在寻找一种存储(可能是)通用结果集的字节表示的方法,以供以后查阅。

最佳答案

我能想到的Oracle中最通用的方法是创建一个存储过程,该过程将结果集转换为XML,并将其作为CLOB XMLType存储在具有长期查询结果的表中。

您可以从通用结果集here中找到有关生成XML的更多信息。

SQL> select dbms_xmlgen.getxml('select employee_id, first_name,
  2  last_name, phone_number from employees where rownum < 6') xml
  3  from dual

10-02 00:23
查看更多