小编Mik*_*ter的帖子

如何解决Oracle SQL语句的性能问题

我有两个插入语句,几乎完全相同,它们在同一个Oracle实例上以两个不同的模式运行.insert语句看起来并不重要 - 我在这里寻找故障排除策略.

两种模式都有99%相同的结构.一些列的名称略有不同,除了它们是相同的.insert语句几乎完全相同.一个解释计划的成本为6,另一个的解释计划的成本为7.两个插入语句集中涉及的表具有完全相同的索引.已经为两个模式收集了统计数据.

一个insert语句在5秒内插入12,000条记录.

另一个insert语句在4分19秒内插入25,000条记录.

插入的记录数是正确的.执行时间的巨大差异让我感到困惑.鉴于解释计划中没有任何突出的问题,您将如何确定导致运行时间差异的原因?

(我在Windows机器上使用Oracle 10.2.0.4).

编辑:问题最终成为一个低效的查询计划,涉及笛卡尔合并,不需要这样做.明智地使用索引提示和散列连接提示解决了这个问题.现在需要10秒钟.Sql Trace/TKProf给了我方向,因为我向我展示了计划中每个步骤花了多少秒,以及生成了多少行.因此TKPROF告诉我: -

Rows     Row Source Operation
-------  ---------------------------------------------------
  23690  NESTED LOOPS OUTER (cr=3310466 pr=17 pw=0 time=174881374 us)
  23690   NESTED LOOPS  (cr=3310464 pr=17 pw=0 time=174478629 us)
2160900    MERGE JOIN CARTESIAN (cr=102 pr=0 pw=0 time=6491451 us)
   1470     TABLE ACCESS BY INDEX ROWID TBL1 (cr=57 pr=0 pw=0 time=23978 us)
   8820      INDEX RANGE SCAN XIF5TBL1 (cr=16 pr=0 pw=0 time=8859 us)(object id 272041)
2160900     BUFFER SORT (cr=45 pr=0 pw=0 time=4334777 us)
   1470      TABLE ACCESS …
Run Code Online (Sandbox Code Playgroud)

database oracle performance

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

database ×1

oracle ×1

performance ×1