LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

SQL優化案例:UPDATE優化案例

admin
2025年6月22日 0:24 本文熱度 119

導讀

在數據庫應用中,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

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
三級亚洲人Av在线影院 | 亚洲综合网中文字幕 | 亚洲中文字幕一二区精品自拍 | 日本一区精品一本大道 | 色婷婷综合和线在线 | 香港三级日本三级人妇精品 |