優化sql解析

2021-08-10 15:28:00 字數 1021 閱讀 5971

使用繫結變數

調整cursor_sharing

2)、similar:similar是在oracle認為某條sql語句的謂詞條件可能會影響到它的執行計畫時,才會被重新分析,否則將重用sql。

3)、force:force是在任何情況下,無條件重用sql。

加大共享池

生產時間減少資料字典修改

使用session_cached_cursors引數減少軟分析--每個session(會話)最多可以快取多少個關閉掉的cursor,預設50

將trigger/package keep到共享池

a)sys使用者登入

b)執行@%oracle_home%/rdbms/admin/dbmspool.sql

c)sql>execute dbms_shared_pool.keep('procedurename') (銷定,必須用sys完成)

d)找到銷定的物件select owner,name,type from v$db_object_cache where kept='yes';

e)銷定對單獨的sql語句無法操作,盡可能的把大語句做成procedure,可以用一下語句尋找出比較大的語句

set line 150

select substr(sql_text,1,45),length(sql_text) "stmt_size" from v$sqlarea where command_type=47 order by length(sql_text) desc;

f)可以編寫乙個指令碼,當例項啟動之後執行,把所有需要銷定的語句執行一下

h)只有使用unkeep或者例項關閉時才會取消銷定

keep常用sql到共享池

select address,hash_value,sql_text from v$sqlarea where sql_text='select * from dual';

exec dbms_shared_pool.keep('00000000a91dfb10,942515969','c');

sql執行過程解析 索引 優化 鎖

將from後面的資料庫表檔案載入到記憶體 如果有where,則對錶進行過濾,取出符合條件的資料並生成一張臨時表,where是對從資料庫表檔案載入到記憶體中的原生資料過濾 若果有group by,則將表按條件進行分隔,分隔成若干個臨時表 select執行讀取時,按有無group by兩種情況 a 沒有...

查詢優化 SQL優化

查詢優化注意點 代表查詢速度比較 1 所有查詢必須注意 的使用必要性 cout 1 cout 2 字段 主鍵索引 字段 普通索引 字段 沒有索引 3 乙個字段 多個字段 欄位多越慢 4 大於10000和大於10001的區別 後者大於前者 5 列沒別名 列 有別名6 兩個條件,where時應該將符合資...

SQL優化 索引優化

一 發現哪些sql語句有效能問題 開啟mysql慢查詢日誌對sql語句進行監控 show variables like slow query log 檢視是否開啟慢查詢日誌 set global slow query log on 開啟慢查詢日誌 set global log queries not...