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 命令来确定两个查询的执行计划是否相同,并尝试在程序中使用相同的查询计划。
    • 数据库中可能存在其他正在执行的查询或者事务,这可能会影响查询的性能。可以尝试在查询前先检查数据库的负载情况,并在负载较低时执行查询。
    • 数据库统计信息可能不准确,导致查询优化器选择了不合适的执行计划。可以尝试重新收集数据库的统计信息,并在查询前强制使用特定的执行计划。

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

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!