Oracle数据库sql调优
最近做的一個項目涉及到大數據量的數據表查詢。數據表總量在7億-20億左右,以主鍵建立全局唯一索引,分區策略是hash分區+范圍分區,很大部分情況下查詢條件命中記錄數超過萬條,單次返回前XX條記錄。在調優過程中總結出以下經驗:
(1)在業務規則允許的情況下,盡量減少區間限制條件,即便該屬性是索引字段。如:DATE>=min AND DATA <= max。如果有區間限制條件,會將所有記錄與限制條件逐一比較,如果記錄數較大,則會嚴重影響查詢效率。
(2)使用order by排序盡量保證與索引順序一致,oracle在建立索引的時候會默認以升序排序,order by規則與索引建立順序一致的話則不會再單獨進行排序操作
(3)如果查詢條件均在索引范圍,可考慮先搜索索引的rowid,通過rowid回表獲取數據。該方法的好處是盡量減少回表訪問。需要注意的是,該方法適合返回數據量較小的情況,如翻頁記錄等。
目前還存在多hash分區數據訪問排序效率很慢的問題,還在解決中,待續!!!!
(4)在查詢總記錄條數時,建議sql寫法為SELECT COUNT(1) FROM TABLE_NAME WHERE [OPTION CONDITION...]。若查詢條件均為索引字段,這樣寫的好處是不用進行回表操作,直接查找索引獲得結果。
轉載于:https://www.cnblogs.com/xt2008/p/5735036.html
總結
以上是生活随笔為你收集整理的Oracle数据库sql调优的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (2)安装宝塔与docker及docke
- 下一篇: Redis开发与运维学习笔记