sql查询语句速度

本文探讨了一张包含百万条数据的数据库表的查询效率问题。针对flowNo字段建立了索引,通过比较不同类型的SQL查询语句(如直接大小比较与拼接方式)发现,直接大小比较的查询速度更快。文章提醒在编写select子句时需要注意避免拼接操作以提高系统查询速度,从而进行有效的SQL优化。

查询一张百万数据量的数据库表,已经建立了索引 flowNo。

因为导出日志备份需要,要求根据flowNo的值取出数据。

即,select部分的语句如下:

Select MONTHNO||'|'||FLOWNO||'|'||DIFFERENCEKEY||'|'||INPHONENUM||'|'||USERTYPE||'|'||DISTRICT||'|'||STRORGCALLED||'|'||BEGINTIME||'|'||ENDTIME||'|'||CALLTIME||'|'||QUEUETIMES||'|'||QUEUETIME||'|'||OVERTIMES||'|'||ERRORTIMES||'|'||REFUSETIMES||'|'||NOANSWERTIMES||'|'||APPRAISETIMES||'|'||ENDREASON||'|'||TOPSTAFFNO||'|'||STAFFNO||'|'||QBEGINTIME||'|'||QENDTIME||'|'||APPRAISE||'|'||ACCESSCODE||'|'||SKILLNO||'|'||AREACODE||'|'||FLOWFLAG||'|'||ANSWERTIME from t_log_auto_bak t 

对比了以下三种where查询子句的运行速度:

1.

where t.flowno between '2017031400' and '2017031410'

查询105412条数据耗时126.031秒

where t.flowno between '2017031400' and '2017031401'

查询4222条数据耗时5.438秒


2.

where t.flowno like '201703140%'

查询105412条数据耗时124.437秒

where t.flowno like '2017031400%'

查询4222条数据耗时5.39秒


3.

where t.flowno >='2017031400' and t.flowno <'2017031410'

查询105412条数据耗时124.078秒

where t.flowno >='2017031400' and t.flowno <'2017031401'

查询4222条数据耗时4.625秒


从这里来看,使用直接的大小比较的语句查询速度要略快一些。

此外,在select子句中使用的拼接也拖慢了系统查询的速度,这里要考虑一下要如何优化查询


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值