经过对部分SQL进行调优之后,目前系统主要受瓶颈于以下类型的SQL
SELECT COUNT(:"SYS_B_00") FROM
(select distinct t.zch, t.zs, t.fddbr, t.qymc, t.year, t.corpid as corpid, t.njhzzt as njhzztid, t.qylxdl, nvl(t.optimizeflag, :"SYS_B_01")
optimizeflag, t.fristsubmit as fristsubmit, t.jbrscrq, t.jbrscqz, t.czscqz, y.name as qylx, djjg.content as djjg, gxdw.content as gxdw,
njbm.content as njbm, decode(t.njba, :"SYS_B_02", :"SYS_B_03", :"SYS_B_04", :"SYS_B_05") njba
from (select year, zs, zch, fddbr, qylx, qymc, corpid, njhzzt, qylxdl, optimizeflag, fristsubmit,
jbrscrq, jbrscqz, czscqz, djjg, gxdw, njbm, njba from NJ_DJZGJGSH where qylxdl not between :"SYS_B_06" and :"SYS_B_07"
and njhzzt in (:"SYS_B_08", :"SYS_B_09", :"SYS_B_10") and year=:"SYS_B_11" and zch like :"SYS_B_12" and substr(nvl(fhdq, njbm),
:"SYS_B_13", :"SYS_B_14")=:"SYS_B_15" and nvl(fhdq, gxdw)=:"SYS_B_16" ) t , eptype y, bm_djjg djjg, bm_gxdw gxdw, bm_djjg njbm
where t.qylx=y.interfaceid(+) and t.djjg=djjg.code(+) and t.gxdw=gxdw.code(+) and t.njbm=njbm.code(+) )
此类型SQL中,子查询对NJ_DJZGJGSH表格的执行效率尤为糟糕。
select year, zs, zch, fddbr, qylx, qymc, corpid, njhzzt, qylxdl, optimizeflag, fristsubmit,
jbrscrq, jbrscqz, czscqz, djjg, gxdw, njbm, njba
from NJ_DJZGJGSH
where qylxdl not between :"SYS_B_06" and :"SYS_B_07"
and njhzzt in
(:"SYS_B_08", :"SYS_B_09", :"SYS_B_10") and year=:"SYS_B_11"
and zch like :"SYS_B_12" and substr(nvl(fhdq, njbm),
:"SYS_B_13", :"SYS_B_14")=:"SYS_B_15" and nvl(fhdq, gxdw)=:"SYS_B_16"
其执行计划为为全表扫描,其COST高达2510
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
8 (1)| 00:05:02 |
| 8 | TABLE ACCESS FULL | NJ_DJZGJGSH | 1 | 164 | 2510
7 (1)| 00:05:02 |
建议:
对此类SQL语句在SELECT中进行函数转换,在没有建立函数索引的前提下,执行效率将会很糟糕。
建议如下:
1、 在insert时进行函数转换。
2、 根据修改后的SQL,必要时考虑建联合索引。
分享到:
相关推荐
mysql数据库性能调优
数据库性能调优技术--索引调优 作者:杨万富
数据库性能调优.原理与技术 - 中文电子书 第1章 基本原理 1.1 原理的作用 1.2 个基本原理 1.3 基本原理和知识 第2章 事务处理调优 2.1 本章目标 2.2 封锁和并发控制 2.3 日志和恢复子系统 2.4 操作...
数据库性能调优是知识密集型的学科,需要综合考虑各种复杂的因素:数据库缓冲区的大小、索引的创建、语句改写等等。总之,数据库性能调优的目的在于使系统运行得更快。数据库调优技术可以在不同的数据库系统中使用。...
数据库性能调优.原理与技术.pdf 调优需要有广泛的知识,这使得它既简单又复杂。 说调优简单,是因为调优者不必纠缠于复杂的公式和规则。许多学术界和业界的研究者都在尝试将调优和查询处理建立在数学基础之上。 称...
DB2 性能调优入门 了解DB2日常监控的过程 熟悉DB2常用的监控工具 能够熟练使用snapshot工具 能够熟练使用event monitor工具 能够熟练使用db2pd工具 能够使用SQL访问监控结果 能够熟练使用recovery expert工具
数据库性能调优是知识密集型的学科,需要综合考虑各种复杂的因素:数据库缓冲区的大小、索引的创建、语句改写等等。总之,数据库性能调优的目的在于使系统运行得更快。 调优需要有广泛的知识,这使得它既简单又复杂...
整理的比较详细的Oracle数据库性能调优文档,从sql执行原理上分析调优的过程,希望对大家的Oracle数据库开发有所帮助
数据库性能调优是知识密集型的学科,需要综合考虑各种复杂的因素:数据库缓冲区的大小、索引的创建、语句改写等等。总之,数据库性能调优的目的在于使系统运行得更快。数据库调优技术可以在不同的数据库系统中使用。...
很不错的讲述数据库调优的国外教材,翻译版,比较深入
数据库性能调优技术系列,数据库性能调优技术系列
Oracle10g数据库性能调优方法研究
您可以应用这些简单的一步步的性能调优示例来提高您自己的 DB2 UDB 数据库系统上的性能。此外,您也有机会了解如何评估和分析访问计划,并修复“糟糕的查询”。在该文章系列的第 2 部分中,我们将使用更完整的数据库...
数据库性能一般用两个方面的指标来衡量:响应时间和吞吐量。响应越快,吞吐量越大,数据库性能越好。响应时间和吞吐量有些情况下不能一起得到改善。
数据库性能调优 原理与技术 国外的教科书,很不错的
数据库性能调优常用SQL语句
oralce 数据库 性能调优
ORACLE数据库性能调优