Oracle中SQL語句執行效率的查詢與解決 (3)
SORT- merge JOIN,將兩表的連線列各自排序然後合併,只能用於連線列相等的情況,適合兩表大小相若的情況(在缺乏資料的選擇性或者可用的索引時,或者兩個源表都過於龐大(超過記錄數的5%)時,排序合併連線將比巢狀迴圈連更加高效。但是,排列合併連線只能用於等價連線(WHERE D.deptno=E.dejptno,而不是WHERE D.deptno>=E.deptno)。排列合併連線需要臨時的記憶體塊,以用於排序(如果SORT_AREA_SIZE設定得太小的話)。這將導致在臨時表空間佔用更多的記憶體和磁碟I/O。)
HASH JOIN在其中一表的連線列上作雜湊,因此只有另外一個表做排序合併,理論上比SORT JOIN會快些,需要有足夠的記憶體,而且開啟了SORT_JOIN_ENABLE引數。(當缺少有用的索引時,雜湊連線比巢狀迴圈連線更加有效。雜湊連線可能比排序合併連線更快,因為在這種情況下只有一張源表需要排序。雜湊連線也可能比巢狀迴圈連線更快,因為處理記憶體中的雜湊表比檢索B_樹索引更加迅速。和排序合併連線、群集連線一樣,雜湊連線只能用於等價連線。和排序合併連線一樣,雜湊連線使用記憶體資源,並且當用於排序記憶體不足時,會增加臨時表空間的I/O(這將使這種連線方法速度變得極慢)。最後,只有基於代價的優化器才可以使用雜湊連線。)
BNo2: AUTOTRACE
•set autotrace 使用步驟:
1、以system登入
2、建立plustrace角色; \sqlplus\admin\plustrce.sql
3、向常規使用者授予許可權:grant plustrace to
4、如果沒有plan_table也要建立: \rdbms\admin\utlxplan.sql
• set autotrace 選項
on 顯示查詢結果,執行計劃,統計資料
on statistics 顯示查詢結果,統計資料,不顯示執行計劃
on explain 顯示查詢結果,執行計劃,不顯示統計資料
traceonly 顯示執行計劃和統計結果,但不包括查詢結果
traceonly statistics 僅顯示統計資料
recursive calls 在使用者級別和系統級別上生成的遞迴呼叫的數量。Oracle維護了一些用於內部處理的表。當oracle需要對這些表進行更改時,它就會在內部生成一個SQL語句,然後這個語句再生成一個遞迴呼叫。
db block gets 請求一個CURRENT塊的次數
consistent gets 為一塊請求consistent read的次數
physical reads 從磁碟讀取得資料塊總數。這個數量等於“直接物理讀取”的值加上讀入緩衝區的所有資料塊
redo size 生成的重做的總數量(以位元組為單位)
bytes sent via SQL * Net to client 從前臺程式傳送給客戶的總位元組數
bytes received via SQL * Net from client 通過Oracle Net從客戶接收的總位元組數
SQL*Net roundtrips to/from client 傳送給客戶和從客戶接收的Oracle Net訊息的總數
sorts (memory) 完全在記憶體中執行並且不需要任何磁碟寫入的排序操作的數量
>
db block gets 請求一個CURRENT塊的次數
consistent gets 為一塊請求consistent read的次數
physical reads 從磁碟讀取得資料塊總數。這個數量等於“直接物理讀取”的值加上讀入緩衝區的所有資料塊
redo size 生成的重做的總數量(以位元組為單位)
bytes sent via SQL * Net to client 從前臺程式傳送給客戶的總位元組數
bytes received via SQL * Net from client 通過Oracle Net從客戶接收的總位元組數
SQL*Net roundtrips to/from client 傳送給客戶和從客戶接收的Oracle Net訊息的總數
sorts (memory) 完全在記憶體中執行並且不需要任何磁碟寫入的排序操作的數量
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1384/viewspace-264858/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle中SQL語句執行效率的查詢與解決 (2)OracleSQL
- Oracle中SQL語句執行效率的查詢與解決 (1)OracleSQL
- Oracle中SQL語句執行效率問題的查詢與解決OracleSQL
- 查詢Oracle正在執行的SQL語句OracleSQL
- 查詢Oracle正在執行和執行過的SQL語句OracleSQL
- 查詢執行慢的SQL語句SQL
- 查詢正在執行的SQL語句SQL
- 查詢Oracle正在執行的sql語句及執行該語句的使用者OracleSQL
- 查詢效率低下的sql的語句SQL
- Oracle 查詢某個session正在執行的sql語句OracleSessionSQL
- oracle檢視執行最慢與查詢次數最多的sql語句OracleSQL
- mysql查詢效率慢的SQL語句MySql
- Laravel 框架查詢執行的 SQL 語句Laravel框架SQL
- 查詢sql語句執行次數SQL
- SQL Server 查詢歷史執行的SQL語句SQLServer
- 查詢正在執行的sql語句及該語句執行的時間SQL
- 文章主題: 在Oracle中查詢剛才執行過的SQL語句OracleSQL
- SQL查詢語句 (Oracle)SQLOracle
- 【SQL】Oracle sql語句 minus函式執行效率與join對比SQLOracle函式
- oracle查詢語句執行計劃中的表消除Oracle
- SQL 查詢語句的執行順序解析SQL
- 查詢orcale執行的SQL語句記錄SQL
- 在mysql查詢效率慢的SQL語句MySql
- 資料庫查詢優化:使用explain分析sql語句執行效率資料庫優化AISQL
- 一條 SQL 查詢語句是如何執行的?SQL
- T-sql語句查詢執行順序SQL
- GaussDB SQL查詢語句執行過程解析SQL
- 輸入的查詢 SQL 語句,是如何執行的?SQL
- sql server中如何檢視執行效率不高的語句SQLServer
- 查詢當前正在執行的SQL語句並KILLSQL
- oracle、my sql、sql隨機查詢語句OracleSQL隨機
- MySQL資料庫詳解(一)SQL查詢語句是如何執行的?MySql資料庫
- MySql定位執行效率較低的SQL語句MySql
- ORACLE 鎖表的解決方法及查詢引起鎖表SQL語句[轉]OracleSQL
- ORACLE 鎖表的解決方法及查詢引起鎖表SQL語句方法OracleSQL
- oracle使用profiler分析語句執行效率Oracle
- 一條查詢語句的執行流程
- 查詢阻塞與被阻塞SQL語句SQL