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

Oracle SQL 效能調優核心原則與排序優化實戰

     編輯:Oracle 資料庫基礎

SQL 調優四大黃金法則

  1. 消除不必要的大表全表掃描:有序表回傳 <40%、無序表 <7% 列時應走索引。手段:建立 B-tree/Bitmap/Function-based 索引、使用 Index Hint
  2. 小表全表掃描快取化:Oracle 7 用 ALTER TABLE ... CACHE;8i+ 強制置入 KEEP Pool
  3. 確保最優索引使用:多索引可選時驗證 CBO 選擇,必要時 Hint 指定
  4. 確保最優聯結方法:Nested Loop / Hash Join / Sort-Merge Join 視資料量與索引而定

WHERE 子句寫法陷阱與改寫

情境失效寫法索引友善寫法
空值判斷WHERE col IS NULL避免索引欄位存 NULL;改用預設值或函數索引
欄位聯接WHERE first_name||last_name = 'BillClinton'WHERE first_name='Bill' AND last_name='Clinton'
前置萬用字元WHERE name LIKE '%clinton%'WHERE name LIKE 'clinton%'(後置萬用字元可用索引)
ORDER BY 非索引/運算式ORDER BY sal*12改寫使用索引欄位;或建立函數索引
NOT / <> 運算子WHERE salary <> 3000WHERE salary < 3000 OR salary > 3000
IN 子查詢WHERE id IN (SELECT ...)WHERE EXISTS (SELECT 'X' FROM ...) — 相關子查詢可提早終止

原則:避免在索引欄位上使用函數、運算式、隱含轉型。

排序操作效能關鍵

  • 觸發排序:ORDER BY、GROUP BY、CREATE INDEX、聯結觸發 Merge Sort
  • 專用連線:PGA 分配 sort_area_size;共享連線:Large Pool
  • 記憶體不足 → 磁碟排序(Temp 表空間),慢 ~14,000 倍
  • 調大 sort_area_size、sort_area_retained_size;監控 V$SORT_USAGE、V$SORT_SEGMENT

實務檢核清單

  1. 收集完整統計資訊(DBMS_STATS.GATHER_SCHEMA_STATS)
  2. 檢視執行計劃(EXPLAIN PLAN / AUTOTRACE)
  3. 識別全表掃描、笛卡兒積、排序溢寫磁碟
  4. 逐一套用上述原則改寫或加索引
  5. 驗證改善幅度
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved