前提:需要優化的sql符合oracle的高效語法規則,這裡暫且不提
1.在plsql工具中通過使用f5檢視sql語句的執行計畫
2.如果走全表掃瞄,則可通過hints的方式更改cbo的掃瞄方式( table access full 或者index range scan),hints 無法更改cbo的掃瞄方式,則需要考慮hints 的寫法是否準確。
hints語法規則:/*+index(表或表別名 索引名稱)*/ --如果有別名的情況下不寫別名則可能會導致cbo忽略該hints
3.保證每個子查詢、表的查詢效率
4.保證每個子查詢的效率則可通過更新所涉及到物件的統計資訊嘗試解決,
更新統計資訊語法:
analyze table table_name compute statistics; --重新收集表的統計資訊
analyze index idx_name estimate statistics; --重新手機索引的統計資訊
5.子查詢的查詢效率沒有問題,但是hash join 的cost值太大,可以考慮更換關聯條件解決,當然前提是要保證整個sql的查詢邏輯正確
談談SQL慢查詢的解決思路
慢sql的系統表現 首先,我們如何判別系統中遇到了sql慢查詢問題?個人認為慢sql有如下三個特徵 1,資料庫cpu負載高。一般是查詢語句中有很多計算邏輯,導致資料庫cpu負載。2,io負載高導致伺服器卡住。這個一般和全表查詢沒索引有關係。3,查詢語句正常,索引正常但是還是慢。如果表面上索引正常,但...
sql查詢慢 查詢
select creation time n 語句編譯時間 last execution time n 上次執行時間 total physical reads n 物理讀取總次數 total logical reads execution count n 每次邏輯讀次數 total logical ...
慢Sql語句優化思路
1.開啟慢查詢日誌,設定超過幾秒為慢sql語句,抓取慢sq語句。l 2.通過explain檢視執行計畫,對慢sql語句分析。3.建立索引並調整語句,再檢視執行計畫,對比優化結果。先看type all全表掃瞄,沒有用到索引 再看key null沒有使用索引列 然後看rows 數值越多耗時越長 最後看e...