教程集 www.jiaochengji.com
教程集 >  数据库  >  mysql  >  正文 mysql分页limit速度太慢

mysql分页limit速度太慢

发布时间:2015-10-07   编辑:jiaochengji.com
问题:网站一直被人刷,导致mysql数据库异常发生too many open connections 。

问题:网站一直被人刷,导致mysql数据库异常发生too many open connections 。

引发此问题的SQL语句:
SELECT a.uid, a.veil, a.content, a.datetimes, a.audit, b.user_name, b.uc_id
FROM news_talkabout a
LEFT JOIN users_info b ON a.uid = b.id
WHERE infoid =11087
ORDER BY a.id DESC
LIMIT 451350 , 30

放在phpmyadmin里执行一下,是很慢。

SELECT a.uid, a.veil, a.content, a.datetimes, a.audit, b.user_name, b.uc_id
FROM news_talkabout a
LEFT JOIN users_info b ON a.uid = b.id
WHERE infoid =11087
ORDER BY a.id DESC
LIMIT 0 , 30

第一页会很快

PERCONA PERFORMANCE CONFERENCE 2009上,来自雅虎的几位工程师带来了一篇”EfficientPagination Using MySQL“的报告
limit10000,20的意思扫描满足条件的10020行,扔掉前面的10000行,返回最后的20行,问题就在这里。
LIMIT 451350 , 30 扫描了45万多行,怪不得慢的数据库都堵死了。

但是

limit 30 这样的语句仅仅扫描30行。

那么如果我们之前记录了最大ID,就可以在这里做文章

举个例子

日常分页SQL语句
select id,name,content from users order by id asc limit 100000,20
扫描100020行

如果记录了上次的最大ID
select id,name,content from users where id>100073 order by id asc limit 20
扫描20行。

您可能感兴趣的文章:
mysql limit用法及优化详解
学习MySQL数据分页查询(limit用法)
mysql查询优化之limit和count的优化
mysql优化之LIMIT,OFFSET分页
优化mysql的limit offset的例子
学习mysql中的limit分页优化
mysql的limit offset,n的奥秘

相关阅读:
MySQL海量数据的通用存储过程分页代码
实例详解mysql limit大数据量分页优化的方法

您可能感兴趣的文章:
学习MySQL数据分页查询(limit用法)
mysql limit,offset 区别实例分析
学习mysql中的limit分页优化
mysql分页limit速度太慢
实例详解mysql limit大数据量分页优化的方法
优化mysql的limit offset的例子
MySQL limit查询优化的实例详解
mysql优化之LIMIT,OFFSET分页
MYSQL分页limit速度太慢优化详解
mysql高效分页的实例分析

[关闭]
~ ~