選擇性 = 列唯一值數量 / 表總行數
高選擇性列上的查詢回傳資料少,索引存取效率極高;低選擇性列強行用索引,反而因大量 TABLE ACCESS BY ROWID 隨機 I/O 拖垮效能。
Oracle 執行一條 SQL 可能經歷多個步驟,每步稱為行源。步驟組合即執行計畫,是 SQL 調優的核心觀測對象。
SELECT ename, job, sal, dname
FROM emp, dept
WHERE emp.deptno = dept.deptno
AND NOT EXISTS (
SELECT * FROM salgrade
WHERE emp.sal BETWEEN losal AND hisal
);
查詢薪資不在任何建議區間內的員工資訊。

FIRST_ROWS 目標,快速回應首筆資料。ALL_ROWS 目標,追求總吞吐。實際運行中,葉子步驟(如 3、5、4)可能並行執行。樹狀圖難以反映並行順序,需輔以線性計畫(DBMS_XPLAN.DISPLAY_CURSOR)觀察 PX 算子與 TQ 佇列。
選擇性決定索引價值,執行計畫揭示執行真相。掌握樹狀結構的「葉子先行、管道流動、阻塞識別」三大原則,配合 FIRST_ROWS/ALL_ROWS 目標選擇,是讀懂計畫、精準調優的入門鑰匙。