o0TT0o 2013-10-08 15:11 采纳率: 0%
浏览 1231

一条查询语句,在plsql执行6秒,但pc编译出来后却跑20分钟。

查询最大流水号,在plsql执行6秒就有结果了,但用pc编译出来的程序却跑不出,至少20分钟,请问可能是什么原因导致的?
语句:
select max(seqno)
into :iMaxSeqEN
from T
where entrydate = to_number(to_char(sysdate,'yyyymmdd')) ;
数据库情况:10G,这张表中公有几亿条数据,每天产生几十万条数据。按entrydate建立了索引。
程序情况:有另一张表,使用了同样的语句,同样的数据库结构,plsql和程序跑都没问题

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-02-25 19:12
    关注

    该回答引用ChatGPT

    由于这条查询语句在 PL/SQL 中可以在 6 秒内返回结果,但在通过 PC 编译出来的程序中却需要至少 20 分钟,可能有以下几个原因:

    • PC 编译出来的程序可能存在性能问题,导致查询速度变慢。可能需要检查程序的代码实现,例如是否存在不必要的循环、重复查询等问题。
    • 编译出来的程序可能使用了不同的数据库连接方式,这可能会影响查询的性能。可以尝试使用与 PL/SQL 相同的数据库连接方式。
    • 编译出来的程序可能没有使用与 PL/SQL 相同的查询计划。可以尝试使用 EXPLAIN PLAN 命令来确定两个查询的执行计划是否相同,并尝试在程序中使用相同的查询计划。
    • 数据库中可能存在其他正在执行的查询或者事务,这可能会影响查询的性能。可以尝试在查询前先检查数据库的负载情况,并在负载较低时执行查询。
    • 数据库统计信息可能不准确,导致查询优化器选择了不合适的执行计划。可以尝试重新收集数据库的统计信息,并在查询前强制使用特定的执行计划。

    需要综合考虑以上原因,并逐一排查,找到导致性能差异的具体原因,从而进一步优化程序的性能。

    评论

报告相同问题?

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿