百万数据下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索引原理是什么?-mysql教程-学派吧

    本篇文章主要给大家介绍mysql索引原理,希望对需要的朋友有所帮助!(相关推荐:《mysql教程》) 索引的目的 索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的,如果我想找到m开头的单词呢?或者ze开头…

    2019年4月9日
    2.0K00
  • 腾讯云数据库通过 CLB 开启外网服务进行连接

    数据库 MySQL 支持内网和外网两种地址类型,默认提供内网地址供您内部访问实例,如果需要使用外网访问,除了开启外网地址后,通过 Linux 或者 Windows 云服务器连接访问实例,也可通过负载均衡 CLB 开启外网服务进行访问,通过 CLB 开启外网服务必须配置安全组规则。 以下为您介绍通过 CLB 开启外网服务,并通过 MySQL workbench…

    2025年7月25日
    65000
  • mysqldump 参数和使用方法及资料说明

    前言 mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等。 1. 常用参数 2. mysqldump 默认参数 3. mysqldump 常用方法 mysqldump是MySQL数据库自带的一款命令行工具,mysqldump属于单线程,功能是非常强…

    数据库运维 2018年10月3日
    4.5K00
  • 【MySQL】information_schema库中包含所有表的字段信息-mysql教程-

    information_schema提供了对数据库元数据、统计信息、以及有关MySQL Server的信息访问(例如:数据库名或表名,字段的数据类型和访问权限等)。information_schema库中保存的信息也可以称为MySQL的数据字典或系统目录。本文主要讲述了information_schema库中包含所有表的字段信息,感兴趣的朋友可以了解一下。 …

    数据库运维 2019年4月24日
    3.1K00
  • MySQL MID()函数的用法详解(代码示例)-mysql教程-学派吧

    在MySQL中,MID()函数返回从指定位置开始的子字符串。 MID()和SUBSTR()都是SUBSTRING()的同义词。 基本语法是这样的: MID(str,pos,len) 这里,str是字符串,pos是起始子字符串的位置,len是一个可选参数,它决定从起始位置返回的字符数。 这个函数有几种不同的使用方法,所以完整的语法看起来是这样的: MID(st…

    数据库运维 2019年4月9日
    2.9K00

发表回复

登录后才能评论
联系我们

联系我们

18838889666

在线咨询: QQ交谈

邮件:xinyun@88.com

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

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