iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0

使用EXPLAIN PLAN分析效能

EXPLAIN PLAN FOR 是 Oracle 中用來獲取 SQL 執行效能的語法,EXPLAIN PLAN 生成的執行計劃會存在 Oracle 中,可再使用DBMS_XPLAN.DISPLAY讀取SQL查詢語言產生的CPU使用時間。

Example
假設你有如下查詢,並想要查看其執行計劃:

-- create
CREATE TABLE Student (
  ID NUMBER PRIMARY KEY,
  name VARCHAR2(15) NOT NULL,
  Subject VARCHAR2(10) NOT NULL,
  Score VARCHAR2(10) NOT NULL
);
-- insert
INSERT INTO Student VALUES (1, 'Amy', 'Eng', 74);
INSERT INTO Student VALUES (2, 'Peter', 'Eng', 50);

CREATE TABLE PHONE (
  name VARCHAR2(15) NOT NULL,
  phone VARCHAR2(15) NOT NULL
);

-- insert
INSERT INTO PHONE VALUES ('Amy', '0956258956');
INSERT INTO PHONE VALUES ('Peter', '0974859359');
INSERT INTO PHONE VALUES ('Amy', '02-5689574');

-- 生成的執行計劃
EXPLAIN PLAN FOR
select s.*
  , (select phone from Phone P where P.name = S.name and rownum<=1) phone
from student s
where s.subject = 'Eng'
;
-- 查詢執行計劃
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

輸出如下:

Id Operation Name Rows Bytes Cost (%CPU) Time
0 SELECT STATEMENT 2 72 6 (0) 00:00:01
1 COUNT STOPKEY
2 TABLE ACCESS FULL PHONE 1 18 3 (0) 00:00:01
3 TABLE ACCESS FULL STUDENT 2 72 3 (0) 00:00:01

解釋:

  • Id: 操作順序
  • Operation: 執行的操作,如 TABLE ACCESS FULL 表示全表掃描
  • Name: 資料庫名稱
  • Rows: 處理行數
  • Bytes: 處理的字元數
  • Cost: 估計影響CPU%
  • Time: 預計執行時間

【Reference】


上一篇
Day 23 進階-效能(1)
下一篇
Day 25 應用-使用Schema設計資料庫
系列文
不居功的系統隱士 - 30天由淺入深學SQL30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言