ORACLE SQL效能最佳化系列 (六) (轉)
20. 用表連線替換EXISTS:namespace prefix = o ns = "urn:schemas--com::office" />
通常來說 , 採用表連線的方式比EXISTS更有
ENAME
FROM EMP E
WHERE EXISTS (SELECT ‘X’
FROM DEPT
WHERE DEPT_NO = E.DEPT_NO
AND DEPT_CAT = ‘A’);
(更高效)
SELECT ENAME
FROM DEPT D,EMP E
WHERE E.DEPT_NO = D.DEPT_NO
AND DEPT_CAT = ‘A’ ;
(譯者按: 在RBO的情況下,前者的路徑包括FILTER,後者使用NESTED L)
21. 用EXISTS替換DISTINCT
當提交一個包含一對多表資訊(比如部門表和僱員表)的查詢時,避免在SELECT子句中使用DISTINCT. 一般可以考慮用EXIST替換
例如:
低效:
SELECT DISTINCT DEPT_NO,DEPT_NAME
FROM DEPT D,EMP E
WHERE D.DEPT_NO = E.DEPT_NO
高效:
SELECT DEPT_NO,DEPT_NAME
FROM DEPT D
WHERE EXISTS ( SELECT ‘X’
FROM EMP E
WHERE E.DEPT_NO = D.DEPT_NO);
EXISTS 使查詢更為迅速,因為RMS核心模組將在子查詢的條件一旦滿足後,立刻返回結果.
22. 識別’低效執行’的語句
用下列SQL工具找出低效SQL:
SELECT EXECUTIONS , DISK_READS, BUFFER_GETS,
ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio,
ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run,
SQL_TEXT
FROM V$SQLAREA
WHERE EXECUTIONS>0
AND BUFFER_GETS > 0
AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8
ORDER BY 4 DESC;
(譯者按: 雖然目前各種關於SQL的圖形化工具層出不窮,但是寫出自己的SQL工具來解決問題始終是一個最好的方法)
23. 使用TKPROF 工具來查詢SQL狀態
SQL trace 工具收集正在執行的SQL的效能狀態資料並記錄到一個跟蹤中. 這個跟蹤檔案提供了許多有用的資訊,例如解析次數.執行次數,使用時間等.這些資料將可以用來最佳化你的.
設定SQL TRACE在會話級別: 有效
ALTER SESSION SET SQL_TRACE TRUE
設定SQL TRACE 在整個有效仿, 你必須將SQL_TRACE引數在init.ora中設為TRUE, USER_DUMP_DEST引數說明了生成跟蹤檔案的目錄
(譯者按: 這一節中,作者並沒有提到TKPROF的用法, 對SQL TRACE的用法也不夠準確, 設定SQL TRACE首先要在init.ora中設定TIMED_STATISTICS, 這樣才能得到那些重要的時間狀態. 生成的trace檔案是不可讀的,所以要用TKPROF工具對其進行轉換,TKPROF有許多執行引數. 大家可以參考手冊來了解具體的. )
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-981635/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE SQL效能最佳化系列 (十) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (十一) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (一) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (二) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (三) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (四) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (九) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (五) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (八) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (七) (轉)OracleSQL
- ORACLE SQL效能最佳化系列 (十二) (轉)OracleSQL
- Oracle SQL效能最佳化系列講座之三(轉)OracleSQL
- Oracle SQL效能最佳化系列講座之二(轉)OracleSQL
- Oracle SQL效能最佳化系列講座之一(轉)OracleSQL
- ORACLE SQL效能最佳化系列 (十四) 完結篇 (轉)OracleSQL
- Oracle效能最佳化之SQL最佳化(轉)OracleSQL
- Oracle SQL效能最佳化OracleSQL
- Oracle sql 效能最佳化OracleSQL
- Oracle SQL效能最佳化常用方法OracleSQL
- oracle SQL效能最佳化大總結OracleSQL
- ORACLE SQL效能優化系列 (一)OracleSQL優化
- Oracle SQL的最佳化[轉]OracleSQL
- Oracle某X系統SQL最佳化(案例六)OracleSQL
- Oracle SQL效能優化系列介紹OracleSQL優化
- Oracle效能最佳化之應用最佳化(轉)Oracle
- Oracle效能最佳化之最佳化排序操作(轉)Oracle排序
- Oracle效能最佳化之LockContention(轉)Oracle
- Oracle效能最佳化之Rollback(undo)Segment最佳化(轉)Oracle
- Oracle 11g 中SQL效能最佳化新特性之SQL效能分析器(SQLPA)OracleSQL
- oracle 效能最佳化Oracle
- Oracle效能最佳化之提升block的效率(轉)OracleBloC
- Oracle資料庫效能最佳化技術(轉)Oracle資料庫
- 效能調優——SQL最佳化SQL
- SQL效能最佳化之索引最佳化法SQL索引
- 效能最佳化之SQL語句最佳化SQL
- 【效能最佳化】ORACLE資料庫效能最佳化概述Oracle資料庫
- Oracle資料庫效能最佳化技術(轉載)Oracle資料庫
- Oracle效能最佳化之診斷latch競爭(轉)Oracle