mysql最快分页方法,mysql分页
众所周知,mysql分页是这样写的:
select * from 'yourtable' limit start,rows
现在我数据库一张表里面有9969W条数据,表名叫tweet_data
select count(*) from tweet_data
![]()
![]()
执行第一条sql语句,就查6000000条开始的10条,看查询时间![]()

![]()
![]()
60s这得有多慢!
解决方案一、
有人立马想到了利用索引来提高效率,那么我们就利用主键吧,所以,便有了下面这种sql
select * from tweet_data where id >=(select id from tweet_data limit 60000000,1)limit 10
看看效果![]()

![]()
果然没有多大提升,但是如果数据量在百万级别的话,效率还是可以多番几倍,但是!这明显没有达到我们的要求
解决方案二、
那么就有了下面这种sql语句
select * from tweet_data where id_auto_increase between 60000000 and 60000010
![]()

![]()
![]()
有图为证!
在这里我们只对一张表上的数据进行了操作,而且数据量在1亿条左右,但是如果我们的数据量更大呢?
那么就要涉及到更多知识了!小弟拙见!
找

些基础

书先看看
先看

下分页

基本原理(我拿


CSDN


百万级数据库来测试

):SELECT * FROM `csdn` ORDER BY id DESC LIMIT 100000,2000;耗时: 0.813ms分析:对上面

mysql语句说明:limit 100000,2000

意思扫描满足条件

102000行

扔掉前面

100000行

返回



2000行

问题



里




limit 100000,20000

需要扫描120000行




高并发

应用里

每次查询需要扫描超过100000行

性能肯定大打折扣


《efficient pagination using mysql》

提出

clue方式

利用clue方法

给翻页提供

些线索

比

还

SELECT * FROM `csdn` order by id desc

按id降序分页

每页2000条

当前

第50页

当前页条目id

大


102000


小


100000



我们只提供上

页、下

页

样

跳转(

提供

第N页

跳转)




处理上

页

时候SQL语句



:SELECT * FROM `csdn` WHERE id<=102000 ORDER BY id DESC LIMIT 2000; #上

页耗时:0.015ms处理下

页

时候SQL语句



:耗时:0.015ms

样


管翻多少页

每次查询只扫描20行

效率大大提高了





样分页

缺点

只能提供上

页、下

页

链接形式
http://www.htsjk.com/shujukunews/1998.html
www.htsjk.Com
true
http://www.htsjk.com/shujukunews/1998.html
NewsArticle
mysql最快分页方法,mysql分页 众所周知,mysql分页是这样写的: select * from yourtable limit start,rows 现在我数据库一张表里面有9969W条数据,表名叫tweet_data select count(*) from tweet_data 执行第一条...
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。