ORACLE資料庫SQL優化--->如何執行計劃的執行順序
建議安裝(10g即以上版本上)xplan package,XPALN包其實是對DBMS_XPLAN包的封裝,使用XPLAN包就可以很清晰的看到執行計劃的執行順序。
安裝很簡單:其中xplan.sql_.txt可以到如下的網站下載:
[[email protected] ~]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Wed Feb 12 10:59:14 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> @xplan.sql_.txt
Type created.
Type created.
old 13: &&_awr_start
new 13: /*
old 19: &&_awr_end
new 19: */
Package created.
old 270: &_awr_start
new 270: /*
old 342: &_awr_end
new 342: */
Package body created.
下面我用剛才已經安裝好的XPLAN包的同名方法來檢視目標SQL執行計劃:
SQL> select count(*) from hr.t1;
COUNT(*)
----------
201276
SQL> select sql_text,sql_id,child_number from v$sql where sql_text like 'select count(*) from hr.t1%';
SQL_TEXT
--------------------------------------------------------------------------------
SQL_ID CHILD_NUMBER
------------- ------------
select count(*) from hr.t1
bdw8bnh2qhwcm 0
SQL> select * from table(xplan.display_cursor('bdw8bnh2qhwcm',0,'advanced'));
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
SQL_ID bdw8bnh2qhwcm, child number 0
-------------------------------------
select count(*) from hr.t1
Plan hash value: 3724264953
---------------------------------------------------------------------------
| Id | Order | Operation | Name | Rows | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | 3 | SELECT STATEMENT | | | 617 (100)| |
| 1 | 2 | SORT AGGREGATE | | 1 | | |
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
| 2 | 1 | TABLE ACCESS FULL| T1 | 201K| 617 (2)| 00:00:08 |
---------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
---------------------------------------------------------------------
1 - SEL$1
2 - SEL$1 / [email protected]$1
Outline Data
-------------
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
/*+
BEGIN_OUTLINE_DATA
IGNORE_OPTIM_EMBEDDED_HINTS
OPTIMIZER_FEATURES_ENABLE('10.2.0.1')
ALL_ROWS
OUTLINE_LEAF(@"SEL$1")
FULL(@"SEL$1" "T1"@"SEL$1")
END_OUTLINE_DATA
*/
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Column Projection Information (identified by operation id):
-----------------------------------------------------------
1 - (#keys=0) COUNT(*)[22]
38 rows selected.
從上面可以看出有一個ORDER列,它列出了目標SQL的實際執行步驟。
相關推薦
ORACLE資料庫SQL優化--->如何執行計劃的執行順序
建議安裝(10g即以上版本上)xplan package,XPALN包其實是對DBMS_XPLAN包的封裝,使用XPLAN包就可以很清晰的看到執行計劃的執行順序。 安裝很簡單:其中xplan.sql_.txt可以到如下的網站下載: [[email protec
ORACLE資料庫SQL優化--->如何得到真實的執行計劃
在ORACLE資料庫裡通常可以使用如下的四種方法來得到目標SQL的執行計劃: 1,EXPLAIN PLAN命令 2,DBMS_XPLAN包 3,SQLPLUS中的AUTOTRACE開關 4,10046事件 除了第四種方法外,其他的三種方法得到的執行計劃都有可能不準確。在OR
ORACLE 資料庫 SQL 優化
出處: 1.資料庫訪問優化法則 要正確的優化SQL,我們需要快速定位能性的瓶頸點,也就是說快速找到我們SQL主要的開銷在哪裡?而大多數情況效能最慢的裝置會是瓶頸點,如下載時網路速度可能會是瓶頸點,本地複製檔案時硬碟可能會是瓶頸點,為什麼這些一般的工
崔華基於oracle的SQL優化讀書筆記(一)如何得到真實的執行計劃
hash mes getting binary oracl only 中文 fun roc ---恢復內容開始--- 得到目標SQL的執行計劃,大致有以下四種方式: 1.explain plan 命令 2.DBMS_XPLAN包 3.SQLPLUS中的autotrace開關
Oracle之SQL優化專題02-穩固SQL執行計劃的方法
首先構建一個簡單的測試用例來實際演示: create table emp as select * from scott.emp; create table dept as select * from scott.dept; create index idx_emp_empno on emp(empno);
Oracle之SQL優化專題01-檢視SQL執行計劃的方法
在我2014年總結的“SQL Tuning 基礎概述”中,其實已經介紹了一些檢視SQL執行計劃的方法,但是不夠系統和全面,所以本次SQL優化專題,就首先要系統的介紹一下檢視SQL執行計劃的方法。 本文示例SQL為: --set lines 1000 pages 1000 select a.emp
MySQL資料庫SQL優化第四篇:通過trace分析優化器如何選擇執行計劃
MySQL5.6提供了對SQL的跟蹤trace,通過trace檔案能夠進一步瞭解為什麼優化器選擇A執行計劃而不是選擇B執行計劃,幫助我們更好地理解優化器行為。 使用方式:首先開啟trace,設定格式為JSON,設定trace最大能夠使用的記憶體大小,避免解析過程中
Mysql SQL優化系列之——執行計劃連線方式淺釋
關係庫SQL調優中,雖然思路都是一樣的,具體方法和步驟也是大同小異,但細節卻不容忽視,尤其是執行計劃的具體細節的解讀中,各關係庫確實有區別,特別是mysql資料庫,與其他關係庫的差別更大些,下面,我們僅就SQL執行計劃中最常見的連線方式,做以下簡要介紹和說明。 system : a syst
Oracle資料庫中的Where條件執行順序是從後往前的?
先看下面的一小段程式碼 ORACLE採用自下而上的順序解析WHERE子句,根據這個原理,表之間的連線必須寫在其他WHERE條件之前, 那些可以過濾掉最大數量記錄的條件必須寫在WHERE子句的末尾. 例如: (低效) SELECT … FROM EMP
檢視Oracle資料庫SQL執行歷史
方法1:使用LogMiner工具 優點:可以完全挖掘日誌內容,找出所有執行過的SQL語句 缺點: 如果沒有啟用歸檔日誌,則只能對聯機日誌進行挖掘 需要掌握LogMiner的用法 方法2:檢視HIST檢視 優點:簡單,只要使用普通的select語句查
MySQL之新SQL優化(非同步執行)
背景 本次SQL優化是針對javaweb中的表格查詢做的。 部分網路架構圖 業務簡單說明 N個機臺將業務資料傳送至伺服器,伺服器程式將資料入庫至MySQL資料庫。伺服器中的javaweb程式將資料展示到網頁上供使用者檢視。 原資料庫設計 windows單機主從
查詢Oracle資料庫的物化檢視的執行時間
其中由於之前對total_time的一個錯誤理解導致這個SQL查出來的時間存在問題。 total_time:表示此物化檢視從建立開始到此次查詢,這個時間段中此物化檢視的總共的執行時間。而不是此物化檢視
宜信-運維-資料庫|SQL優化:一篇文章說清楚Oracle Hint的正確使用姿勢
一、提示(Hint)概述 1、為什麼引入Hint? Hint是Oracle資料庫中很有特色的一個功能,是很多DBA優化中經常採用的
轉://從一條巨慢SQL看基於Oracle的SQL優化
查看 針對性 map 分區 有關 需要 fix pts 大局觀 http://mp.weixin.qq.com/s/DkIPwbDKIjH2FMN13GkT4w 本次分享的內容是基於Oracle的SQL優化,以一條巨慢的SQL為例,從快速解讀SQL執行計劃、如何從執行計劃中
資料庫SQL優化大總結之 百萬級資料庫面試優化方案
網上關於SQL優化的教程很多,但是比較雜亂。近日有空整理了一下,寫出來跟大家分享一下,其中有錯誤和不足的地方,還請大家糾正補充。 這篇文章我花費了大量的時間查詢資料、修改、排版,希望大家閱讀之後,感覺好的話推薦給更多的人,讓更多的人看到、糾正以及補充。 一、百萬級資料庫優化
53 Oracle資料庫SQL開發之 子查詢——編寫包含子查詢的UPDATE和DELETE
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
66 Oracle資料庫SQL開發之 高階查詢——使用線性迴歸函式
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
oracle查詢SQL優化
如果表中的時間欄位是索引,那麼時間欄位不要使用函式,函式會使索引失效。 例如: select * from mytable where trunc(createtime)=trunc(sysdate);--不走索引,慢吞吞。createtime欄位有時分秒,使用trunc()函式去除時分秒,只保留年
華為面試題之資料庫sql優化方案
對於資料庫分割槽欄位,索引欄位,基本資料型別如何在sql進行優化查詢 答案:我們應該在過濾條件使用順序調整成分割槽條件/索引條件/基本資料型別條件 資料庫分割槽 是一種物理資料庫設計技術,DBA和資料庫建模人員對其相當熟悉。雖然分割槽技術可以實現很多效果,但其主要目的是
資料庫SQL優化大總結之 百萬級資料庫優化方案
網上關於SQL優化的教程很多,但是比較雜亂。近日有空整理了一下,寫出來跟大家分享一下,其中有錯誤和不足的地方,還請大家糾正補充。 這篇文章我花費了大量的時間查詢資料、修改、排版,希望大家閱讀之後,感覺好的話推薦給更多的人,讓更多的人看到、糾正以及補充。 1.對查詢進行