ANALYZE 收集統計信息。/*+ RULE */ 或 /*+ FIRST_ROWS */,避免默認 CHOOSE。SQL 解析後駐留於 SGA Shared Pool,再次執行同語句可復用計劃,節省 CPU/內存。
嚴格字符級匹配 (含空格/換行/大小寫):
SELECT * FROM EMP;
SELECT * from EMP; -- 不同
Select * From Emp; -- 不同
對象解析完全一致:同義詞/所有者/權限路徑須一致。
綁定變量類型/長度一致:避免隱式轉換導致重新解析。
CURSOR_SHARING=FORCE/SIMILAR 謹慎使用,可能引發計劃不穩定。WHERE TRUNC(dt)=... → 失效)。IS NULL 不走普通索引 (位圖索引除外)。LIKE '%abc%' 導讀列以通配符開頭失效。WHERE num_col='123') 導致索引失效。IN / EXISTS 互轉,視外表/內表大小決定。NOT IN 含 NULL 陷阱,改用 NOT EXISTS。OFFSET ... FETCH FIRST n ROWS ONLY。ROWNUM 雙層嵌套,外層過濾 RN BETWEEN :start AND :end。ROWNUM 直接配合 ORDER BY 邏輯錯誤。DBMS_STATS.GATHER_TABLE_STATS 替代 ANALYZE。METHOD_OPT=>'FOR COLUMNS SIZE AUTO col'。LOCK_TABLE_STATS) 防止夜間自動收集導致計劃突變。SET AUTOTRACE TRACEONLY EXPLAIN STATISTICSDBMS_XPLAN.DISPLAY_CURSOR 看實際執行計劃 (含 E-Rows/A-Rows)。V$SQL_PLAN、V$SQLSTATS、SQL Monitoring (11g+)。SQL Trace (10046) + TKPROF 深度分析。性能優化是系統工程:**規範開發 → 統計維護 → 計劃穩定 → 持續監控**。53 條規則非孤立技巧,需融入團隊 Code Review 與發布流程,方能長效受益。