1. 程式人生 > >ORACLE資料庫SQL優化--->如何執行計劃的執行順序

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主要的開銷在哪裡?而大多數情況效能最慢的裝置會是瓶頸點,如下載時網路速度可能會是瓶頸點,本地複製檔案時硬碟可能會是瓶頸點,為什麼這些一般的工

崔華基於oracleSQL優化讀書筆記(一)如何得到真實的執行計劃

hash mes getting binary oracl only 中文 fun roc ---恢復內容開始--- 得到目標SQL的執行計劃,大致有以下四種方式: 1.explain plan 命令 2.DBMS_XPLAN包 3.SQLPLUS中的autotrace開關

OracleSQL優化專題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);

OracleSQL優化專題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看基於OracleSQL優化

查看 針對性 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.對查詢進行