纵有疾风起
人生不言弃

mysql分页提示too many open connections

网站分页一般用到limit 0 10当不停的刷页面的时候提示错误怎么解决呢

网站不停刷页面,导致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分页提示too many open connections
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录