时间: 2020-09-24|tag:23次围观|0 条评论

网站分页一般用到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
   

还没有人抢沙发呢~