百万数据下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
百万数据下mysql条件查询及分页查询的注意事项-mysql教程-
下一篇 2019年4月24日 下午11:25

相关推荐

  • 什么是T-SQL?-mysql教程-学派吧

    Transact-SQL通常缩写为T-SQL,或者TSQL,是Microsoft和Sybase对SQL的专有扩展。Transact-SQL对SQL标准进行扩展,以包含SQL标准中不包含的额外特性。 下面是一个简单的T-SQL语句的例子: CREATE DATABASE Movies; 这是一个简单的T-SQL示例。这将创建一个名为Movies的新数据库。 但…

    2019年4月9日
    3.4K00
  • centos解决mysql-bin.000*占用超大空间的问题

    本站(也就是安全者)网站数据库挂了一下午,也没时间处理,晚上回来后尝试restart mysql,发现一直提示shutting down……….关闭不了,也stop不了,服务器重启也不行。可以确信肯定是mysql出问题了。 进入mysql的data目录一大堆名字为mysql-bin.000001 — mysql…

    数据库运维 2018年7月9日
    2.5K00
  • MySQL 5.7并发复制和mysqldump相互阻塞引起的复制延迟-Linux运维日志

    有需要服务器方面的需求和咨询,可以联系博主 QQ 7271895 本来MySQL BINLOG和SHOW PROCESSLIST命令属于八竿子打不着的两个事务,但在最近故障排查中,发现主库和从库已经存在很严重的复制延迟,但从库上显示slave_behind_master值为0,复制SQL线程与备份线程之间相互阻塞,但未报死锁 在从库上执行SHOW PROCE…

    2018年9月30日
    2.5K00
  • Redis的事务操作的命令与执行操作教程-mysql教程-学派吧

    本篇文章给大家带来的内容是关于Redis的事务操作的命令与执行操作(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 序1 本文主要研究一下redis的事务操作 命令 multi与exec 命令行 127.0.0.1:6379> multi OK 127.0.0.1:6379> incr total QUEUED 127.0…

    数据库运维 2018年11月24日
    3.0K00
  • mysql禁止外部访问解决方案-mysql教程

    本文主要讲述了当mysql禁止外部访问的解决方案,具有一定的收藏价值,有需要的朋友了解一下吧。 1.在端口已经开放的情况下,ubuntu mysql 3306允许远程访问vim /etc/mysql/mysql.conf.d/mysqld.cnf注释#bind-address = 127.0.0.1 2.给用户授权允许远程访问:grant all privi…

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

发表回复

登录后才能评论
联系我们

联系我们

18838889666

在线咨询: QQ交谈

邮件:xinyun@88.com

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

添加微信
添加微信
分享本页
返回顶部