*Oracle 11g升級19c 后部分查詢功能很慢
今天生產突然有個查詢非常慢,日志顯示執行了50秒左右,但是從日志中拿出SQL在PLSQL執行,發現用時不到1秒,查看SQL,懷疑是下面幾種原因導致
1、使用函數不當
UNIT.UNIT_CODE LIKE CONCAT(‘%’, CONCAT(#{unitCodeOrName}, ‘%’)
修改為 INSTR(INFO.UNIT_CODE, ‘${unitCodeOrName}’) > 0
2、MyBatis解析花費時間較長
原因及參考方案可參考
https://blog.csdn.net/WO8451401/article/details/126948846?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-126948846-blog-106021178.235%5Ev43%5Epc_blog_bottom_relevance_base3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-126948846-blog-106021178.235%5Ev43%5Epc_blog_bottom_relevance_base3&utm_relevant_index=6
3、執行SQL驅動不對
升級19c后,默認驅動為19c的,可指定SQL執行的驅動為11g
/*+ OPTIMIZER_FEATURES_ENABLE(‘11.2.0.4’) */
最終經過實際驗證,第三種方案順利解決問題,數據庫和程序腳本執行時間基本一致,非常快