在开发应用程序时,如果SQL查询优化的语句设计得不好,可能就会很严重地影响到应用程序的性能。因此我们在开发应用程序时,一定要慎用SQL的查询语句,尽可能地把SQL查询优化做到***。
本文我们通过一个实例来告诉大家在开发应用程序及执行SQL查询优化语句时的一些思路,实例如下:在某银行做校园卡缴费的测试过程中,发现成功缴费时间很长,大约需要75秒左右,原因分析:在做校园卡缴费的时候,首先是从数据库中查询到需要缴费的费项,然后再对该费项进行缴费,缴费成功后修改相应的状态,交易完成后,查看日志,发现下面的查询语句执行时间很长,在数据库中执行时间大约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';
解决办法,优化此SQL语句(说实话,这个SQL写得真不好,只是实现了功能,完全没有考虑性能,尤其当数据库大的时候),下面是优化后的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'
- )
此语句执行时间只有0.219秒,快了很多很多。
总结:在类似于这种交易,先查询再缴费(改变字段状态)的交易,执行查询时间的多少直接影响到此交易的性能。假如只是做插入,不做查询的交易,这种交易一般都很快,有查询,然后再缴费(改变字段状态)的交易,如果响应时间很慢,那需要在查询SQL语句上进行优化了。
关于SQL查询优化的知识就介绍这么多,希望能够带给您一些收获吧!
【编辑推荐】