資料庫統計資訊不更新導致的效能問題
SQL如下,系統動態生成的,主要是檢視符合多個條件付款對應的所有明細記錄。語句本身有問題,因為,多個in可以合併成一個in,相關的條件and起來即可,這個暫時忽略。
SELECT doc.* FROM TLK_PAYMENT_DETAIL doc
WHERE ISTMP=0 AND (((((((ITEM_contractnumber = '06603833'))
AND (doc.parent in (select parentdoc.id from TLK_TEPAYMENT_MAIN parentdoc where parentdoc.ITEM_單據型別 IN ('4','8'))))
AND (doc.parent in (select parentdoc.id from TLK_TEPAYMENT_MAIN parentdoc where parentdoc.ITEM_IsReverse = '0')))
AND (doc.parent in (select parentdoc.id from TLK_TEPAYMENT_MAIN parentdoc where parentdoc.stateint = 1048576)))
AND (doc.parent in (select parentdoc.id from TLK_TEPAYMENT_MAIN parentdoc where parentdoc.istmp <> 1)))
AND ((ITEM_expensecode = '33000100')))
執行計劃: (第4步是一個笛卡爾集!)
-----------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
-----------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 1 (100)|
| 1 | NESTED LOOPS | | 1 | 20853 | 0 (0)|
| 2 | NESTED LOOPS | | 1 | 20338 | 0 (0)|
| 3 | NESTED LOOPS | | 1 | 19823 | 0 (0)|
| 4 | MERGE JOIN CARTESIAN | | 1 | 2008 | 0 (0)|
| 5 | TABLE ACCESS BY INDEX ROWID | TLK_TEPAYMENT_MAIN | 1 | 1004 | 0 (0)|
|* 6 | INDEX SKIP SCAN | TLK_TEPAYMENT_MAIN_06 | 1 | | 0 (0)|
| 7 | BUFFER SORT | | 1 | 1004 | 0 (0)|
| 8 | INLIST ITERATOR | | | | |
| 9 | TABLE ACCESS BY INDEX ROWID| TLK_TEPAYMENT_MAIN | 1 | 1004 | 0 (0)|
|* 10 | INDEX RANGE SCAN | TLK_TEPAYMENT_MAIN_06 | 1 | | 0 (0)|
|* 11 | TABLE ACCESS BY INDEX ROWID | TLK_PAYMENT_DETAIL | 1 | 17815 | 0 (0)|
|* 12 | INDEX RANGE SCAN | TLK_TEPAYMENT_DETAIL_INDEX | 1 | | 0 (0)|
|* 13 | TABLE ACCESS BY INDEX ROWID | TLK_TEPAYMENT_MAIN | 1 | 515 | 0 (0)|
|* 14 | INDEX UNIQUE SCAN | SYS_C006361 | 1 | | 0 (0)|
|* 15 | TABLE ACCESS BY INDEX ROWID | TLK_TEPAYMENT_MAIN | 1 | 515 | 0 (0)|
|* 16 | INDEX UNIQUE SCAN | SYS_C006361 | 1 | | 0 (0)|
-----------------------------------------------------------------------------------------------------
思考了一下,為什麼系統選擇產生笛卡爾集?笛卡爾集未必是壞事,對小的結果集,這種操作還會省時間,但這裡,對兩個大的結果集產生笛卡爾集,說明系統認為這兩個大的結果集"不大",也就是說系統的統計資訊有誤,呼叫dbms_stats相關的函式gether statistics即可
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/136097/viewspace-1003464/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Chrome89針對sessionStorage的更新導致資料共享問題ChromeSession
- 使用資料庫處理併發可能導致的問題資料庫
- 資料庫效能調優之始: analyze統計資訊資料庫
- ORACLE analyse table方式收集表統計資訊導致SQL執行計劃不準確而效能下降OracleSQL
- 有問題的mybatis的sql導致對資料庫進行了批量的修改MyBatisSQL資料庫
- 資料庫管理-第118期 記一次開啟附加日誌導致的效能問題(202301129)資料庫
- Redis和資料庫的資料一致性問題Redis資料庫
- 資料庫系列:巨量資料表的分頁效能問題資料庫
- 資料庫不使用悲觀鎖導致問題的一種復現方式資料庫
- MySQL8.0 view導致的效能問題MySqlView
- 【epoll問題】EPOLLRDHUP使用導致無法接受資料
- 請問這個資料庫統計資訊是什麼,資料庫
- 6 收集資料庫統計資訊資料庫
- 關於 iconv 轉碼導致資料丟失的問題
- 資料字典和固定表統計資訊更新
- 【YashanDB知識庫】資料庫審計shutdown immediate操作導致資料庫異常退出資料庫
- APP接入友盟統計,不上報資料問題APP
- 什麼是資料洩露?哪些問題可導致資料洩露
- 資料庫的統計(select)確實會影響資料庫的更新(update)的資料庫
- Oracle資料傾斜導致的問題-無繫結變數Oracle變數
- Oracle資料傾斜導致的問題-有繫結變數Oracle變數
- 【資料庫資料恢復】斷電導致Oracle資料庫資料丟失的資料恢復案例資料庫資料恢復Oracle
- 記憶體洩漏引起的 資料庫效能問題記憶體資料庫
- 資料庫系統原理-問題集合資料庫
- 硬碟問題導致Gbase資料庫叢集SQL任務執行效率變慢硬碟資料庫SQL
- 【oracle資料庫資料恢復】誤操作導致的資料庫誤刪除的資料恢復案例Oracle資料庫資料恢復
- 資料庫週刊59丨GaussDB(for openGauss)開放商用;MDL鎖導致的MySQL問題分析……資料庫MySql
- 達夢資料庫統計資訊詳解資料庫
- 重置資料庫密碼後導致網站無法訪問資料庫密碼網站
- 關於oracle資料庫訊號量的問題Oracle資料庫
- SQL Server 更新統計資訊SQLServer
- ZooKeeper 避坑指南: ZooKeeper 3.6.4 版本 BUG 導致的資料不一致問題
- SQL SERVER資料庫datediff函式引發的效能問題SQLServer資料庫函式
- Django ORM 引發的資料庫 N+1 效能問題DjangoORM資料庫
- 由於基本資料型別使用姿勢不對導致的線上"死迴圈"問題排查資料型別
- [Redis] 02-快取和資料庫資料一致性問題Redis快取資料庫
- 網路問題導致更多的資料中心中斷
- 在https中引入http資源所導致的問題HTTP
- 【資料庫資料恢復】LINUX EXT3檔案系統下ORACLE資料庫誤操作導致資料丟失的資料恢復案例資料庫資料恢復LinuxOracle