oracle優化SQL基礎步驟

2022-06-22 11:57:13 字數 2545 閱讀 7803

---優化sql  23qax02dyq3t7

1.查詢sql內容

select * from v$sql where sql_id='23qax02dyq3t7';

2.查詢執行sql的客戶端

select q.sample_time,q.sql_exec_start, q.module,q.machine,q.program from v$active_session_history q where q.sql_id='23qax02dyq3t7';

select a.username,a.schemaname,a.machine,a.program,a.module,a.client_info from v$session a where a.sql_id='&1';

3.檢視真實執行計畫

--select * from table(dbms_xplan.display_cursor('&1',&2, 'advanced -projection'));

--第乙個變數sql_id;第二個變數 一般是0

--查詢sql的實際執行計畫

set pagesize 1000 line 1000

explain plan for

select * from test where id='10';

--執行計畫

select * from table(dbms_xplan.display);

4.查詢某個表可以建立索引的列

select a.column_name,

b.num_rows,

a.num_distinct cardinlity,

round(a.num_distinct / b.num_rows * 100, 2) selectitity,

a.histogram,

a.num_buckets

fromdba_tab_col_statistics a, dba_tables b

where a.owner = b.owner

and a.table_name = b.table_name

and a.owner = '&owner'

and a.table_name = '&table_name';

5.查詢已經存在的索引

select distinct table_name,index_name,column_name,column_position,created from dba_ind_columns,dba_objects where table_name=upper('&1') and object_name = index_name order by 2,4;

6.查詢表大小

select sum(bytes/1024/1024/1024) from dba_segments where owner='&owner' and segment_name='&segment_name';

7.查詢繫結變數

select b.name,b.position,b.datatype_string,b.value_string from v$sql_bind_capture b,v$sqlarea a where b.hash_value = a.hash_value and b.sql_id = a.sql_id and a.sql_id = '&1';

8.聯絡開發給出優化建議,或者開發聯絡業務是否可以下線該sql

例如:create index ss.mno_cd_te on ss.t_ms_cd_bd (cd_uuid,ce_te desc) tablespace ss_idx online;

9.改sql近期執行次數

select a.snap_id,a.sql_id,a.instance_number,b.begin_interval_time,b.end_interval_time ,a.executions_delta,a.plan_hash_value,a.cpu_time_delta

from wrh$_sqlstat a, wrm$_snapshot b where a.snap_id = b.snap_id and a.instance_number = b.instance_number and a.sql_id = '&sql_id' order by 4, 1, 3;

10.查詢執行計畫是否改變

select a.snap_id,

a.sql_id,

a.instance_number,

b.begin_interval_time,

b.end_interval_time,

a.executions_total,

a.executions_delta,

a.plan_hash_value,

a.cpu_time_delta

from wrh$_sqlstat a, wrm$_snapshot b

where a.snap_id = b.snap_id

and a.instance_number = b.instance_number

and a.sql_id = '&sql_id'

order by 4, 1, 3;

oracle基礎 SQL優化

一 軟解析和硬解析 1 解析過程 1 語法 語義分析 2 許可權和物件檢查 3 在共享池中進行檢測是否有已解析的相同sql,如果存在 則跳過4 5 執行軟解析,4 5成本比較高 所以要避免硬解析,繫結變數 4 選擇執行計畫 可能有多個執行計畫數 5 生成執行計畫 2 檢視解析結果 select ha...

oracle 技巧 sql 優化

it168 技術文件 一 問題的提出 在應用系統開發初期,由於開發資料庫資料比較少,對於查詢sql語句,複雜檢視的的編寫等體會不出sql語句各種寫法的效能優劣,但是如果將應用系統提交實際應用後,隨著資料庫中資料的增加,系統的響應速度就成為目前系統需要解決的最主要的問題之一。系統優化中乙個很重要的方面...

oracle進行sql優化

優化前 select sqdbh,sqr,bm,sqrq,skdwbm,skdwmc,sqfkje n as xz flag sjfkrq,fkdwkhyh from yw fksqd inner join rs department on bm d no left join cw znhs rk ...