記錄一次Oracle資料庫中的sql優化

2022-06-25 18:36:13 字數 1261 閱讀 2223

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的優化,利用小表去驅動大表

二、最終結果方案

試了很多上上面的方案,可是從響應時間來看,並沒有很好的作用,於是,只好用他們**中的優化方案:

1

select /*+ 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 需要注意的是 售後服務處理單 是乙個檢視 檢視本身並不儲存資料,檢視表...