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

Oracle SQL 效能優化實戰(七):COMMIT 策略、計數函數、WHERE 替代 HAVING、減少表存取

     編輯:Oracle 資料庫基礎

12. 適時 COMMIT 釋放資源

COMMIT 釋放:回滾段資訊、鎖定、Redo Log Buffer 空間、內部管理開銷。注意須平衡交易完整性。

13. 計算筆數效能

COUNT(*) 略快於 COUNT(1),若有索引 COUNT(索引欄) 最快。實測三者差異不大。

14. WHERE 取代 HAVING

HAVING 於全數擷取後過濾,需排序彙總。能用 WHERE 先過濾則減少開銷。

-- 低效
SELECT REGION, AVG(LOG_SIZE) FROM LOCATION
GROUP BY REGION
HAVING REGION != 'SYDNEY' AND REGION != 'PERTH';

-- 高效
SELECT REGION, AVG(LOG_SIZE) FROM LOCATION
WHERE REGION != 'SYDNEY' AND REGION != 'PERTH'
GROUP BY REGION;

HAVING 專用於彙總函數條件 (如 COUNT() > 5)。

15. 減少子查詢對表的重複存取

-- 低效
SELECT TAB_NAME FROM TABLES
WHERE TAB_NAME = (SELECT TAB_NAME FROM TABLES WHERE ...);

合併或重寫避免重複掃描同一表。

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