sql優化的問題之前沒怎麼遇到過,真實的面試中有很多sql優化的面試題,但是在實際的工作中,很少能有優化sql的機會,但是這次有乙個sql優化的任務,是乙個統計的功能,頁面響應速度很慢,有時候還會出現無法響應的結果,看了一下整個介面,從controller層到service層再到sql語句,就是很普通的**,中間雖然有挺多的判斷,但是不至於出現這種響應時間這麼長的結果,於是,我把注意力放到了sql的優化上。
一、sql優化
只寫最終結果的話,確實很沒意思了,還是把sql優化的一些可能方案都寫一下吧,都是從網上各種部落格搜尋的,這裡只是做了乙個總結
1、explain 進行sql語句的分析
2、sql語句中的in包含的值不應該過多
3、select語句務必指明查詢欄位名稱,避免過的的記憶體浪費
4、如果排序字段沒有使用索引,就盡量少排序
5、如果限制條件中其他字段沒有使用索引,就盡量少使用or
6、區分in和exists not in 和not exists
7、使用合理的分頁方式進行分頁已提高分頁效率
8、分段查詢
9、避免where子句中對字段進行null值判斷
10、不建議使用%字首進行模糊查詢匹配
11、避免where子句對欄位進行表示式操作
12、注意範圍查詢語句,比如between < > 會造成索引失效
13、join的優化,利用小表去驅動大表
二、最終結果方案
試了很多上上面的方案,可是從響應時間來看,並沒有很好的作用,於是,只好用他們**中的優化方案:
1select /*+ parallel(cr,4) parallel(sr,4) */2
cr.emp_no,
3cr.emp_name,
4sum
(cr.valid_flag) validcount,
5sum
(cr.major_flag) majorcount,
6count
(cr.call_sn_no) callcount,
7count(distinct
cr.uuid) srvcount
8from
a_table cr
9join
b_table sr
10on sr.srv_sn_no =
cr.call_sn_no
11group
by cr.emp_no, cr.emp_name
分析一次ORACLE資料庫Session暴增的問題
今天中午接到同事求助,說是乙個應用裡面報出了乙個oracle錯誤,於是幫助他看了看,雖然最終沒有解決他的問題 問題不是出在oracle資料庫層面 還是把分析步驟發出來分享一下。問題情況 乙個應用程式執行失敗了,在問題日誌中,發現如下報錯。問題分析 問題細化分析 這篇文章說的情況,大概是這樣的,即pr...
記錄一次oracle使用記錄
使用oracle資料庫的專案到我這邊,需要修改,咱雖然 學過 oracle,但那畢竟已經過去了。哈哈。使用database configuration assistant 建立資料庫,建立快完的時候,說我沒有監聽啥的,然後 通過 net manager 建立了,qizhong1 其中選中的那個就是建...
記一次Oracle資料庫資料找回的過程
誤刪資料的前因後果一大堆就不描述了 總計刪除6條 售後服務處理單,4條銷售退貨單,下面記錄一下資料恢復的過程 1.首先明確我刪除記錄的兩個表分別為 銷售退貨單 m ret sale 售後服務處理單 ap v reservices 需要注意的是 售後服務處理單 是乙個檢視 檢視本身並不儲存資料,檢視表...