首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 10g 優化器 Hints 新特性深度解析

     編輯:Oracle 資料庫基礎

掌握 10g 引入的 12 大新型 Hints 控制 CBO 行為

Oracle 10g 大幅擴展優化器提示集,提供更精細的電子表格優化、連接方法控制、基數/選擇性干預、索引掃描抑制等能力。本文系統解析 12 大新 Hints 語法、參數、適用場景與組合策略。

12 大新 Hints 完整對照

Hint功能領域語法範例適用場景
SPREAD_MIN_ANALYSIS電子表格編譯優化/*+ SPREAD_MIN_ANALYSIS */規則極多電子表格,忽略詳細依賴圖分析,保留過濾/修訂規則優化,大幅縮短編譯時間
SPREAD_NO_ANALYSIS電子表格編譯優化/*+ SPREAD_NO_ANALYSIS */完全跳過電子表格分析,忽略修訂規則與過濾產生,編譯時間降至最低
USE_NL_WITH_INDEX連接方法控制/*+ USE_NL_WITH_INDEX(t1 idx_t1) */強制巢狀迴圈連接,且內部表必須使用指定索引 (至少一個索引鍵參與連接條件)
CARDINALITY基數干預/*+ CARDINALITY(t 1000) */
/*+ CARDINALITY(@subq 500) */
修正 CBO 基數估算偏差;可指定表、子查詢或整個查詢區塊
SELECTIVITY選擇性干預/*+ SELECTIVITY(t 0.01) */
/*+ SELECTIVITY((t1 t2) 0.001) */
指定單表或多表連接後的選擇性 (滿足條件行比例);與 CARDINALITY 同用於同組表時雙方失效
NO_USE_NL連接方法抑制/*+ NO_USE_NL(emp) */禁止指定表作為內部表的巢狀迴圈連接,僅考慮 HASH/SORT-MERGE
NO_USE_MERGE連接方法抑制/*+ NO_USE_MERGE(emp, dept) */禁止指定表作為內部表的排序合併連接
NO_USE_HASH連接方法抑制/*+ NO_USE_HASH(emp, dept) */禁止指定表作為內部表的雜湊連接
NO_INDEX_FFS索引掃描抑制/*+ NO_INDEX_FFS(t idx_t) */禁止指定表的指定索引進行快速全索引掃描 (INDEX FAST FULL SCAN)

電子表格優化 Hints 實戰 (SPREAD_MIN/NO_ANALYSIS)

-- 大量規則電子表格報表查詢
SELECT /*+ SPREAD_MIN_ANALYSIS */ ...
FROM   spreadsheet_table
WHERE  ...;

-- 極度優化編譯時間,接受較差執行計畫
SELECT /*+ SPREAD_NO_ANALYSIS */ ...
FROM   spreadsheet_table
WHERE  ...;

基數/選擇性干預實戰

-- 修正單表基數估算
SELECT /*+ CARDINALITY(orders 5000) */ *
FROM   orders
WHERE  order_date > SYSDATE - 30;

-- 修正多表連接選擇性
SELECT /*+ SELECTIVITY((orders customers) 0.005) */ *
FROM   orders, customers
WHERE  orders.cust_id = customers.cust_id
  AND  customers.region = 'APAC';

連接方法抑制組合策略

-- 強制 HASH JOIN:同時抑制 NL 和 MERGE
SELECT /*+ NO_USE_NL(emp) NO_USE_MERGE(emp) */ *
FROM   emp, dept
WHERE  emp.deptno = dept.deptno;

-- 強制 NESTED LOOPS:抑制 HASH 和 MERGE
SELECT /*+ NO_USE_HASH(emp) NO_USE_MERGE(emp) USE_NL(emp) */ *
FROM   emp, dept
WHERE  emp.deptno = dept.deptno;

版本演進提醒

  • 11g 引入 OPT_PARAM 動態修改優化器參數、OPT_ESTIMATE 更精細的基數/選擇性/成本干預
  • 12c 引入 ADAPTIVE 相關 Hints 控制自適應計畫
  • 19c/21c 持續擴展機器學習優化器干預接口

Hints 使用鐵律

  1. 測試優先:在非生產環境完整驗證執行計畫變化
  2. 最小干預:優先收集統計資訊、建立適當索引,Hints 為最後手段
  3. 文檔化:註釋說明引入原因、預期效果、驗證結果
  4. 版本相容:升級前檢查 Hint 是否廢棄/語法變更
  5. SPM 替代:長期固定計畫優先用 SQL Plan Baseline 而非硬編碼 Hint
  6. 10g 新 Hints 大幅增強了對 CBO 微觀行為的控制力,善用它們能解決統計資訊難以捕捉的邊緣案例效能問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved