为了账号安全,请及时绑定邮箱和手机立即绑定

MySQL limit对效率的影响

MySQL limit对效率的影响

拉风的咖菲猫 2019-04-13 08:36:15
有一张很老的数据表,时间戳格式为varchar,字段如下:idbigintnamevarchar(200)create_timevarchar(200)//索引KEY`IDX_CREATED`(`create_time`),数据约500多万,现在引出发现的问题,一条sql语句效率非常的低:selectid,namefromtwherecreate_time>1434115807296orderbycreate_timelimit1000;本机测试200s,执行计划:>explainselectid,namefromtwherecreate_time>1434115807296orderbycreate_timelimit1000;+----+-------------+-------+-------+---------------+---------------+---------+------+------+-------------+|id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra|+----+-------------+-------+-------+---------------+---------------+---------+------+------+-------------+|1|SIMPLE|User|index|IDX_CREATED|IDX_CREATED|63|NULL|1000|Usingwhere|+----+-------------+-------+-------+---------------+---------------+---------+------+------+-------------+1rowinset(0.00sec)如果去掉limit:selectid,namefromtwherecreate_time>1434115807296orderbycreate_time执行时间5s,执行计划:>explainselectid,namefromtwherecreate_time>1434115807296orderbycreate_time+----+-------------+-------+------+---------------+------+---------+------+---------+-----------------------------+|id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra|+----+-------------+-------+------+---------------+------+---------+------+---------+-----------------------------+|1|SIMPLE|User|ALL|IDX_CREATED|NULL|NULL|NULL|4858500|Usingwhere;Usingfilesort|+----+-------------+-------+------+---------------+------+---------+------+---------+-----------------------------+1rowinset(0.00sec)一个index查询竟然比ALL&filesort查询慢这么多?请MySQL达人指教
查看完整描述

2 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

看执行计划,这两个差别主要在于是否使用了IDX_CREATED的索引,以及filesort。
前者用上了索引,所以你前面where条件的查询速度会有很大提高,但是很奇怪没有用到filesort,所以在后面的orderby阶段会消耗了很大的时间。
后者就是直接简单的查询,没有使用索引,并进行了正常的文件排序。
可以考虑强制不使用索引Ignoreindex来优化此句的性能。
建议你用profile跟踪再详细看一下每个阶段的时间消耗,这样会更为准确。
                            
查看完整回答
反对 回复 2019-04-13
?
郎朗坤

TA贡献1921条经验 获得超9个赞

create_timevarchar(200)
改为
create_timeint(11)
你是用laravel框架自动生成的吧?傻!
另外,你这样对比不公平啊!MYSQL分页慢加速器解决方案MYSQL分页优化MYSQL分页解决方案LIMIT优化
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 320 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信