LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

SQL优化案例:UPDATE优化案例

admin
2025年6月22日 0:24 本文热度 35

导读

在数据库应用中,SQL 性能至关重要。低效 SQL 常致系统响应迟缓,而优化能显著提速。

本案例中的SQL 来源于某客户业务系统中的核心查询语句,为严格遵循数据安全与隐私保护原则,已对涉及客户敏感信息的表名、字段名以及数据值等进行脱敏处理。

01

 适用环境 

  • oracle 11g+

  • linux 6.9+


02

 Top SQL概况 

下面列出我们发现的特定模块中Top SQL的相关情况:


03

 SQL优化方案 

1. SQL_ID:7ts08a2d6qbgb

1)SQL文本

这条SQL超过了700行,截取关键部分分析

UPDATE /*+index(TEST,IDX_XX_01)*/ TBL_XX_HEADER TEST   SET (TEST.COL_SUM,        TEST.COL_BEGIN,        TEST.COL_PERIOD,        TEST.COL_INCOMING,        TEST.COL_END,        TEST.COL_UPD_DATE,        TEST.COL_UPD_BY) =       (SELECT SUM(LN.COL_SUM),               SUM(LN.COL_BEGIN),               SUM(LN.COL_PERIOD),               SUM(LN.COL_INCOMING),               SUM(LN.COL_END),               SYSDATE,               FND_GLOBAL.USER_ID          FROM CUX.TBL_XX_LINES LN         WHERE LN.KEY_1 = TEST.KEY_1           AND LN.COL_PERIOD = TEST.COL_PERIOD           AND LN.ORG_ID = TEST.ORG_ID           AND (LN.ATTR_1 IS NULL OR               LN.ATTR_1 IN ('产品1''产品2''产品3'))         GROUP BY LN.KEY_1, LN.COL_PERIOD) WHERE TEST.ORG_ID = 5565   AND TEST.ORGANIZATION_ID = 5561   AND TEST.COL_PERIOD = '2021-10'   AND TEST.KEY_1 < 0;


2)SQL执行计划

------------------------------------------------------------------------------------------------------------------------------| Id  | Operation                    | Name              | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |------------------------------------------------------------------------------------------------------------------------------|   0 | UPDATE STATEMENT             |                   |       |       |    68 (100)|          |       |       ||   1 |  UPDATE                      | TBL_XX_HEADER     |       |       |            |          |       |       ||*  2 |   INDEX RANGE SCAN           | IDX_XX_01         |     3 |   183 |     4   (0)| 00:00:01 |       |       ||   3 |   SORT GROUP BY NOSORT       |                   |     1 |    94 |     2   (0)| 00:00:01 |       |       ||   4 |    PARTITION RANGE SINGLE    |                   |     1 |    94 |     2   (0)| 00:00:01 |   KEY |   KEY ||*  5 |     TABLE ACCESS STORAGE FULL| TBL_XX_LINES      |     1 |    94 |     2   (0)| 00:00:01 |   KEY |   KEY |------------------------------------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):---------------------------------------------------2 - access("TEST"."ORG_ID"=:B3 AND "TEST"."COL_PERIOD"=:B1 AND "TEST"."ORGANIZATION_ID"=:B2 AND "TEST"."KEY_1"<0)5 - filter(("LN"."KEY_1"=:B1 AND "LN"."COL_PERIOD"=:B2 AND "LN"."ORG_ID"=:B3 AND ("LN"."ATTR_1" IS NULL OR INTERNAL_FUNCTION("LN"."ATTR_1"))))


3)SQL资源消耗                 

PLAN  CHI USER        CPU(MS)  ELA(MS)     DISK          GET        ROWS      ROWS APPLI(MS) CONCUR(MS) CLUSTER(MS) USER_IO(MS) FIRST_LOAD_TIME                                     EXEC          HASH VALUE  NUM NAME       PRE EXEC PRE EXEC PRE EXEC     PRE EXEC    PRE EXEC PRE FETCH  PER EXEC   PER EXEC    PER EXEC    PER EXEC LAST_LOAD_TIME                                      ---------- ------------- ---- ---------- -------- -------- -------- ------------ ----------- --------- --------- ---------- ----------- ----------- ----------------------                              0              918035873    0 APPS       3,511,121  3,712,412    1,713  434,385,844           0         0         0          4         885         582 11-01/15:3.11-01/15:3                               

该SQ修改数据在20000条数据,近期未执行成功。

04

 问题分析及优化思路 

通过分析SQL文本,发现该SQL为update类型。

通过分析执行计划,TBL_XX_LINES作为NL被驱动表走全表扫描,而该表的体积近2GB,这就导致该SQL执行效率非常低。

结合以上分析,该SQL创建合适的索引即可优化。


05

 优化方案 

1. 创建组合索引

CREATE INDEX CUX.IDX_XX_04 ON CUX.TBL_XX_LINES(ORG_ID,KEY_1,COL_PERIOD,ATTR_1)ONLINE PARALLEL 16;ALTER INDEX CUX.IDX_XX_04 NOPARALLEL;


06

 优化效果对比 

通过确认关键表数据量,制定执行计划,可以减少每次查询的逻辑读和物理读,提高SQL执行性能。


写在最后


SQL 优化看似细枝末节,实则关乎系统性能与数据效率的根基。

每一个慢查询的背后,往往隐藏着数据结构、业务逻辑与执行计划之间的微妙博弈。

我们希望通过这一系列实际案例的拆解,帮助你在实战中掌握优化思路与方法论。


阅读原文:原文链接


该文章在 2025/6/23 12:53:37 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved