oracle優化與可持續執行
最近很長一段時間都在優化一個專案,這個專案存在許多問題,從資料架構到工作流
程,我一直在思考一些有關oracle效能優化的問題,我跟開發實施人員進行過多次交流,
發現存在許多交流障礙,許多問題實施人員覺得sql語句執行很快,並不存在效能問題,
我花了大量時間要他看執行計劃,說明當資料積累到一定時間後,會執行越來越慢。
我拿一個例子來說明問題:
SELECT v2.*
FROM consultationrecorddoctor t1
RIGHT OUTER JOIN
(SELECT cr.*, crc.modifydate, crc.modifyuserid, crc.consultationtime,
crc.applyconsultationdeptid, crc.askconsultationdeptid,
crc.consultationdeptid, crc.casehistory_right,
crc.consultationorder_right, crc.consultationidea_right,
crc.otherhospital_right, crc.consultationdate,
crc.maindoctorid, c1.deptname_vchr AS applydeptname,
c2.deptname_vchr AS askdeptname,
c3.deptname_vchr AS deptname,
f_getempnamebyno (crc.maindoctorid) AS maindocname
FROM consultationrecord cr,
consultationrecordcontent crc,
t_bse_deptdesc c1,
t_bse_deptdesc c2,
t_bse_deptdesc c3,
(SELECT cr.inpatientid, cr.inpatientdate, cr.opendate,
cr.createdate,
MAX (crc.modifydate) AS maxmodifydate
FROM consultationrecord cr,
consultationrecordcontent crc
WHERE (crc.applyconsultationdeptid = '0000208')
AND cr.inpatientid = crc.inpatientid
AND cr.inpatientdate = crc.inpatientdate
AND cr.opendate = crc.opendate
AND cr.status = 0
GROUP BY cr.inpatientid,
cr.inpatientdate,
cr.opendate,
cr.createdate) v1
WHERE (crc.applyconsultationdeptid = '0000208')
AND cr.inpatientid = crc.inpatientid
AND cr.inpatientdate = crc.inpatientdate
AND cr.opendate = crc.opendate
AND cr.status = 0
AND crc.applyconsultationdeptid = c1.deptid_chr
AND crc.askconsultationdeptid = c2.deptid_chr
AND crc.consultationdeptid = c3.deptid_chr
AND cr.inpatientid = v1.inpatientid
AND cr.inpatientdate = v1.inpatientdate
AND cr.opendate = v1.opendate
AND v1.maxmodifydate = crc.modifydate
AND crc.maindoctorid IS NOT NULL) v2
ON t1.inpatientid = v2.inpatientid
AND t1.inpatientdate = v2.inpatientdate
AND t1.opendate = v2.opendate
AND t1.modifydate = v2.modifydate
AND t1.employeeflag = 1
WHERE t1.employeeid IS NULL
ORDER BY t1.employeeid DESC, v2.askdeptname, v2.consultationdate;
查詢使用了一個右連線,查詢的表並沒有包含t1表的欄位,而且在實際的t1.employeeid中
根本不存在NULL的值,實際上是從一個大的結果集剔除一個大結果集的而獲得一個小的結
果集,隨著crc表資料量加大,會越來越慢!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-82960/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 效能優化 (十) APP 持續執行之程式保活實現優化APP
- 通過Docker容器執行持續整合/持續部署Docker
- Seo優化+全網營銷的可持續性發展優化
- 【優化】Oracle 執行計劃優化Oracle
- 持續學習-儲存優化之Protobuffer使用與原理優化
- Oracle 優化器與sql查詢執行順序Oracle優化SQL
- 【優化】ORACLE執行計劃分析優化Oracle
- Web命令執行筆記(持續更新)Web筆記
- 可持續IT報告:為何可持續綠色IT革命時機已到?
- java程式碼編寫優化(持續更新...)Java優化
- 持續整合持續部署持續交付_持續整合與持續部署之間的真正區別
- iOS-OC-APP後臺持續執行iOSAPP
- 資訊化可持續發展推動綠色IT潮流
- [原] Android持續優化 - 提高流暢度Android優化
- webpack使用優化(持續更新,歡迎補充)Web優化
- 淺談KPI與開源的可持續發展KPI
- 育碧執行長:持續加碼中國市場
- 讓網站不停止,永遠持續執行網站
- Java 執行緒與同步的效能優化Java執行緒優化
- 容器環境持續整合優化,Drone CI 提速 500%優化
- javascript執行緒及與執行緒有關的效能優化JavaScript執行緒優化
- 以醫為本驅動行業可持續發展行業
- 持續整合、持續部署、持續交付、持續釋出
- 可持續發展報告指南
- 【效能優化】執行計劃與直方圖優化直方圖
- 九江銀行推出手機銀行5.0版 持續優化使用者體驗優化
- ORACLE優化器工作原理及及執行方式《轉》Oracle優化
- Oracle可變引數的優化Oracle優化
- 持續整合、持續交付、持續部署簡介
- 凡泰小程式技術—可持續的數字化轉型
- sql語句執行順序與效能優化(1)SQL優化
- Laravel 團隊任務管理系統(持續開發、優化)Laravel優化
- Windows 檢視系統資訊及持續執行時間 - systeminfoWindows
- 對持續整合、 持續交付、持續部署和持續釋出的介紹
- 銀行業如何持續推進數字化轉型行業
- 使用Jenkins可持續整合maven專案JenkinsMaven
- vuepress與travis-cli持續整合自動化部署Vue
- 微服務、容器與持續交付微服務