很多時候,我們不太清楚自己寫的SQL語句好還是不好,往往數據量一大,程序運行變慢。其實在SQL/PLUS里可以很清楚的分析出SQL語句的執行計劃,它可以提醒我們來創建索引或改變SQL語句的寫法。
先在sys用戶下運行@/Oracle_HOME/sqlplus/admin/plustrce.sql
內容:
set echo on
drop role plustrace;
create role plustrace;
grant select on v_$sesstat to plustrace;
grant select on v_$statname to plustrace;
grant select on v_$session to plustrace;
grant plustrace to dba with admin option;
set echo off
產生plustrace角色,然后在sys用戶下把此角色賦予一般用戶&username
SQL> grant plustrace to &username;
然后找到/ORACLE_HOME/rdbms/admin/utlXPlan.sql,然后在當前用戶SQL>下運行,它創建一個plan_table,用來存儲分析SQL語句的結果。
create table PLAN_TABLE (
statement_id varchar2(30),
timestamp date,
remarks varchar2(80),
Operation varchar2(30),
options varchar2(30),
object_node varchar2(128),
object_owner varchar2(30),
object_name varchar2(30),
object_instance numeric,
object_type varchar2(30),
optimizer varchar2(255),
search_columns number,
id numeric,
parent_id numeric,
position numeric,
cost numeric,
cardinality numeric,
bytes numeric,
other_tag varchar2(255),
partition_start varchar2(255),
partition_stop varchar2(255),
partition_id numeric,
other long,
distribution varchar2(30));
在SQL/PLUS的窗口運行以下命令
set time on; (說明:打開時間顯示)
set autotrace on; (說明:打開自動分析統計,并顯示SQL語句的運行結果)
set autotrace traceonly; (說明:打開自動分析統計,不顯示SQL語句的運行結果)
接下來你就運行測試SQL語句,看到其分析統計結果了。一般來講,我們的SQL語句應該避免對大表的全表掃描。
關閉以上功能,在SQL/PLUS的窗口運行以下命令
set time off; (說明:關閉時間顯示)
set autotrace off; (說明:關閉自動分析統計)