oracle基礎 SQL優化

2022-06-17 05:24:12 字數 937 閱讀 9472

一 軟解析和硬解析

1 解析過程:

1 語法 語義分析

2 許可權和物件檢查

3 在共享池中進行檢測是否有已解析的相同sql,如果存在 則跳過4 ,5 執行軟解析,4-5成本比較高 所以要避免硬解析,繫結變數)

4 選擇執行計畫(可能有多個執行計畫數)

5 生成執行計畫

2 檢視解析結果

select hash_value,executions,sql_text from $sql like 'sql內容' 

以使用者為角度進行快取,所以可能存在多個相同的sql內容的記錄

3 檢視優化器

show parameter optimizer

optimizer_mode: all_rows

4  繫結變數

繫結變數的目的是讓sql本身從硬解析轉換成軟解析 從而減少系統資源的消耗

針對物件 sql模板相同 但是 條件內容不同的sql語句

注意點1 oltp 可以實施繫結變數戰略 但是olap 盡量不要用繫結變數 有時候 全表掃瞄反而效率更高

2 繫結變數的實質就是用於替代sql語句中的常量的替代變數。繫結變數能夠使得每次提交的sql語句都完全一樣

3 繫結變數適合任何 單條 sql事務語句 和 儲存過程。

案例1 定義變數 

variable i number;   

2  賦值 exec :i :=1; exec :i =2

3  查詢  select *from tt where id=:i;

select *from tt where id=:i;

二  總結:

1.盡可能的避免硬解析,因為硬解析需要更多的cpu資源,閂等。

2.cursor_sharing引數應權衡利弊,需要考慮使用similar與force帶來的影響。

3.盡可能的使用繫結變數來避免硬解析。

oracle優化SQL基礎步驟

優化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.pr...

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 ...