SQL查詢優(yōu)化實例:銀行校園卡繳費的性能優(yōu)化
作者:shenzhen2008 
  本文我們通過某銀行校園卡繳費的性能測試來介紹一下在開發(fā)應用程序時設計SQL查詢優(yōu)化的一些思路,希望能夠?qū)δ兴鶐椭?/div>  
 
                         
  在開發(fā)應用程序時,如果SQL查詢優(yōu)化的語句設計得不好,可能就會很嚴重地影響到應用程序的性能。因此我們在開發(fā)應用程序時,一定要慎用SQL的查詢語句,盡可能地把SQL查詢優(yōu)化做到***。
本文我們通過一個實例來告訴大家在開發(fā)應用程序及執(zhí)行SQL查詢優(yōu)化語句時的一些思路,實例如下:在某銀行做校園卡繳費的測試過程中,發(fā)現(xiàn)成功繳費時間很長,大約需要75秒左右,原因分析:在做校園卡繳費的時候,首先是從數(shù)據(jù)庫中查詢到需要繳費的費項,然后再對該費項進行繳費,繳費成功后修改相應的狀態(tài),交易完成后,查看日志,發(fā)現(xiàn)下面的查詢語句執(zhí)行時間很長,在數(shù)據(jù)庫中執(zhí)行時間大約74.516秒,可見幾乎所有的時間都花在查詢上。
- select b.stu_id, b.term_id, b.cost_code
 - from bib_booking_student_info a, bib_booking_fee_info b
 - where a.busi_id = b.busi_id
 - and a.corp_id = b.corp_id
 - and a.term_id = b.term_id
 - and a.stu_id = b.stu_id
 - and b.stu_stat = '0'
 - and a.busi_id = '100104'
 - and a.corp_id = 'E000000059'
 - and a.term_id = '0101'
 - and a.stu_id = '59000030';
 
解決辦法,優(yōu)化此SQL語句(說實話,這個SQL寫得真不好,只是實現(xiàn)了功能,完全沒有考慮性能,尤其當數(shù)據(jù)庫大的時候),下面是優(yōu)化后的SQL語句:
- select b.stu_id, b.term_id, b.cost_code
 - from bib_booking_fee_info b
 - where b.stu_stat = '0'
 - and exists( select 1 from bib_booking_student_info a where
 - a.corp_id = b.corp_id
 - and a.term_id = b.term_id
 - and a.stu_id = b.stu_id
 - and a.busi_id = b.busi_id
 - and a.busi_id = '100104'
 - and a.corp_id = 'E000000059'
 - and a.term_id = '0101'
 - and a.stu_id = '59000030'
 - )
 
此語句執(zhí)行時間只有0.219秒,快了很多很多。
總結(jié):在類似于這種交易,先查詢再繳費(改變字段狀態(tài))的交易,執(zhí)行查詢時間的多少直接影響到此交易的性能。假如只是做插入,不做查詢的交易,這種交易一般都很快,有查詢,然后再繳費(改變字段狀態(tài))的交易,如果響應時間很慢,那需要在查詢SQL語句上進行優(yōu)化了。
關于SQL查詢優(yōu)化的知識就介紹這么多,希望能夠帶給您一些收獲吧!
【編輯推薦】
責任編輯:趙鵬 
                    來源:
                    CSDN博客
  
 
相關推薦
 2023-11-15 16:35:31
 
 
 














 
 







 