一 軟解析和硬解析
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 ...