您好,登錄后才能下訂單哦!
本篇內容主要講解“oracle中對于復雜的SQL語句怎么進行優化”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“oracle中對于復雜的SQL語句怎么進行優化”吧!
遵循下面的思路:
1. 先檢查之前有沒有好的執行計劃,如果之前的執行計劃是比較好的,那么可以使用 SQL Profile 來固定好的執行計劃。
比如可以根據 note 1400903.1 的步驟,類似如下:
a). 我們有兩個語句
select ename from scott.emp where ename='MILLER';
它的SQL_ID是 329d885bxvrcr ,plan hash value是 3045807146
select /*+ FULL (EMP) */ ename from scott.emp where ename='MILLER';
它的SQL_ID是 4f74t4ab7rd5y ,plan hash value是 2872589290
我們的目的就是把 4f74t4ab7rd5y 的plan轉移給 329d885bxvrcr
b). 調用 coe_load_sql_profile.sql 來轉移plan
比如:
SQL> @coe_load_sql_profile.sql
Parameter 1:
ORIGINAL_SQL_ID (required)
Enter value for 1: 329d885bxvrcr =======>此處填寫原始的SQL的SQL_ID
Parameter 2:
MODIFIED_SQL_ID (required)
Enter value for 2: 4f74t4ab7rd5y =======>此處填寫帶hint的SQL的SQL_ID
Parameter 3:
PLAN_HASH_VALUE (required)
Enter value for 3: 2872589290 =======>此處填寫帶hint的SQL的plan hash value (期望的plan)
此時SQL Profile就產生了
c). 您可以再次驗證原來的SQL的plan是否就已經按照我們的期望改變了
2. 如果之前也沒有好的執行計劃,那么接下來需要收集統計信息;因為優化器是根據統計信息來生成執行計劃,所以最新的統計信息經常可以修正不好的執行計劃。
3. 如果收集統計信息也沒有能夠讓 SQL 性能變好,那么接下來需要使用 SQL Tuning Advisory 來幫我們優化,看是否可以找到一些建議。
我注意到您實際上已經嘗試過這種方式了。
4. 如果上面的方法都不能解決問題,那么接下來就需要從 SQL 語句本身入手。
通過聯系應用團隊修改 SQL 邏輯來進一步優化了。
到此,相信大家對“oracle中對于復雜的SQL語句怎么進行優化”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。