百万数据下mysql分页问题-mysql教程-

在开发过程中我们经常会使用分页,核心技术是使用limit进行数据的读取。在使用limit进行分页的测试过程中,得到以下数据:

select * from news order by id desc limit 0,10
耗时0.003秒
select * from news order by id desc limit 10000,10
耗时0.058秒
select * from news order by id desc limit 100000,10 
耗时0.575秒
select * from news order by id desc limit 1000000,10
耗时7.28秒

我们惊讶的发现mysql在数据量大的情况下分页起点越大查询速度越慢,100万条起的查询速度已经需要7秒钟。这是一个我们无法接受的数值!

改进方案 1

select * from news 
where id >  (select id from news order by id desc  limit 1000000, 1)
order by id desc 
limit 0,10

查询时间 0.365秒,提升效率是非常明显的!!原理是什么呢???

我们使用条件对id进行了筛选,在子查询 (select id from news order by id desc limit 1000000, 1) 中我们只查询了id这一个字段比起select * 或 select 多个字段 节省了大量的查询开销!

改进方案2

适合id连续的系统,速度极快!

select * from news 
where id  between 1000000 and 1000010 
order by id desc

不适合带有条件的、id不连续的查询。速度非常快!

以上就是百万数据下mysql分页问题的详细内容,更多请关注php中文网其它相关文章!

主题测试文章,只做测试使用。发布者:云大使,转转请注明出处:https://www.xp8.net/data/3552.html

(0)
打赏 微信扫一扫 微信扫一扫
云大使的头像云大使
上一篇 2019年4月24日 下午11:25
下一篇 2019年4月24日 下午11:25

相关推荐

  • MySQL中如何将字符串转为base64编码?-mysql教程-学派吧

    在MySQL中,TO_BASE64()函数将字符串转换为以base-64编码的字符串并返回结果。(相关推荐:《MySQL教程》) 语法 TO_BASE64(str) 其中str是需要编码的字符串。 例1 -基本用法 下面是一个例子来演示基本用法: SELECT TO_BASE64('Dog'); 结果: +—————-…

    数据库运维 2019年4月9日
    3.4K00
  • 在linux系统下启动 mysql数据库使用教程-学派吧

    本文主要讲述了在在linux系统下启动 mysql数据库操作,感兴趣的朋友可以了解一下。 {mysql}表示mysql的安装目录如何启动/停止/重启MySQL一、启动方式1、使用 service 启动:service mysqld start2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start如果/etc/inint.d/下找…

    数据库运维 2019年4月24日
    4.0K00
  • MySQL数据库的事务隔离和MVCC的详细介绍(图文)-mysql教程-学派吧

    本篇文章给大家带来的内容是关于MySQL数据库的事务隔离和MVCC的详细介绍(图文),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 前言:事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取. 1. 什么是事务? 事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(cons…

    2019年4月9日
    2.7K00
  • MySQL 闪退服务列表里找不到MySQL MySQL服务无法启动等

    前言 昨天配置了WampServer,弄了好长时间、一直不成功、显示丢失文件什么的。mysql也无法使用。下面把我碰到的发出来。仅供其他网友参考 安装MySQL之后输密码之后闪退: 1.最简单的, MySQL如果你输错了密码他就会闪退的。  2.如果你刚安装MySQL,并且下载安装过程中,他没有提示你填写用户名和密码,那你就是默认用户名root,默认密码是没…

    2018年9月14日
    4.4K00
  • 讲解mysql默认事务隔离级别是什么-

    mysql数据库事务的隔离级别有4个,而默认的事务处理级别就是’REPEATABLE-READ’,也就是可重复读。下面本篇文章就来带大家了解一下mysql的这4种事务的隔离级别,希望对大家有所帮助。 SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处…

    数据库运维 2019年4月24日
    3.9K00

发表回复

登录后才能评论
联系我们

联系我们

18838889666

在线咨询: QQ交谈

邮件:xinyun@88.com

工作时间:周一至周五,9:30-18:30,节假日休息

添加微信
添加微信
分享本页
返回顶部
---------官方优惠叠加渠道折扣:通过我们购买腾讯云/阿里云,价格更低,服务更优。更有专业配置指导与服务。微信同步:18838889666----