百万数据下mysql条件查询及分页查询的注意事项-mysql教程-

接上一节《百万数据mysql分页问题》,我们加上查询条件:

select id from news 
where cate = 1
order by id desc 
limit 500000 ,10 
查询时间 20 秒

好恐怖的速度!!利用第一节《百万数据mysql数据测试环境介绍》知识进行优化:

select * from news
where cate = 1 and id > (select id from news where cate = 1 order by id desc limit 500000,1 ) 
order by id desc 
limit 0,10 
查询时间 15 秒

优化效果不明显,条件带来的影响还是很大!在这样的情况下无论我们怎么去优化sql语句就无法解决运行效率问题。那么换个思路:建立一个索引表,只记录文章的id、分类信息,我们将文章内容这个大字段分割出去。

表 news2 [ 文章表 引擎 myisam 字符集 utf-8 ]
-------------------------------------------------
idint11主键自动增加
cateint11索引

在写入数据时将2张表同步,查询是则可以使用news2 来进行条件查询:

select * from news
where cate = 1 and id > (select id from news2 where cate = 1 order by id desc limit 500000,1 ) 
order by id desc 
limit 0,10

注意条件 id > 后面使用了news2 这张表!

运行时间 1.23秒,我们可以看到运行时间缩减了近20倍!!数据在10万左右是查询时间可以保持在0.5秒左右,是一个逐步接近我们能够容忍的值!

但是1秒对于服务器来说依然是一个不能接受的值!!还有什么可以优化的办法吗??我们尝试了一个伟大的变化:

将 news2 的存储引擎改变为innodb,执行结果是惊人的!

select * from news
where cate = 1 and id > (select id from news2 where cate = 1 order by id desc limit 500000,1 ) 
order by id desc 
limit 0,10

只需要 0.2秒,非常棒的速度。为什么会有怎么大的差别呢?请观看下一篇 mysql存储引擎详解。

以上就是百万数据下mysql条件查询及分页查询的注意事项的详细内容,更多请关注php中文网其它相关文章!

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

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

相关推荐

  • Mysql中utf8_unicode_ci、utf8_general_ci有什么区别?-mysql教程-学派吧

    本篇文章给大家带来的内容是关于Mysql中utf8_unicode_ci、utf8_general_ci有什么区别?有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 Mysql中utf8_general_ci与utf8_unicode_ci有什么区别呢?在编程语言中,通常用unicode对中文字符做处理,防止出现乱码,那么在MySQL里,为什么…

    数据库运维 2019年4月9日
    2.9K00
  • 本地IDC机房数据库容灾备份解决方案,防止数据丢失

    风险无处不在,包括自然灾害以及突发事件等,有时候我们无法预测到一些风险,比如天津港爆炸事件。IT领域也一样,总是有意想不到的事情,风险具有不可预测性,万全之策就是做好灾难应对的各种准备。 随着云计算如火如茶的进行,IT资源可进行快速部署,弹性扩容及超高的性价比,这对于我们创建本地IDC机房数据库容灾提供极大的便利性。如何利用云数据库做容灾成为DBA的基本功。…

    2026年1月12日
    21400
  • 在MySQL中的explain中的using where和using index-mysql教程-

    本篇文章的主要内容是关于在mysql数据库explain中的using where和using index的使用,感兴趣的朋友可以了解一下。 1. 查看表中的所有索引 show index from modify_passwd_log; 有两个 一个是id的主键索引 , 一个是email_id的普通索引 2. using index表示 使用到了索引 , 并…

    2019年4月24日
    4.0K00
  • MySQL 5.7并发复制和mysqldump相互阻塞引起的复制延迟-Linux运维日志

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

    2018年9月30日
    2.4K00
  • 在MySQL中如何解码base64编码的字符串?-mysql教程-学派吧

    本篇文章主要给大家介绍在mysql中如何解码base64编码的字符串,那么我们可以通过FROM_BASE64()函数来实现解码。 在MySQL中,FROM_BASE64()函数解码一个base-64编码的字符串并返回结果。更具体地说,它接受一个用TO_BASE64()使用的base-64编码规则编码的字符串,并以二进制字符串的形式返回解码后的结果。 FROM…

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

发表回复

登录后才能评论
联系我们

联系我们

18838889666

在线咨询: QQ交谈

邮件:xinyun@88.com

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

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