當一條查詢語句中包含所有的子句,執行順序依下列子句次序:
FROM 子句:執行順序為從后往前、從右到左。數據量較少的表盡量放在后面。
WHERE子句:執行順序為自下而上、從右到左。將能過濾掉最大數量記錄的條件寫在WHERE 子句的最右。
GROUP BY:執行順序從左往右分組,最好在GROUP BY前使用WHERE將不需要的記錄在GROUP BY之前過濾掉。
HAVING 子句:消耗資源。盡量避免使用,HAVING 會在檢索出所有記錄之后才對結果集進行過濾,需要排序等操作。
SELECT子句:少用*號,盡量取字段名稱。ORACLE 在解析的過程中, 通過查詢數據字典將*號依次轉換成所有的列名, 消耗時間。
ORDER BY子句:執行順序為從左到右排序,消耗資源。