百万数据下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
mysql存储引擎:myIsam和innodb的区别-mysql教程-
下一篇 2019年4月24日 下午11:25

相关推荐

  • Linux服务器下MySQL自动备份脚本的使用方法教程-学派吧-

    问题说明 如何对 ECS Linux 系统中部署的 MySQL 进行自动备份。 处理办法 在 ECS Linux 系统中搭建了 MySQL 服务,用户可以使用如下脚本实现 MySQL 的定期自动备份。 使用方法如下: 1. 将以下脚本拷贝到本地,上传到服务器上,名称叫 “autoback.sh” #!/bin/bash #——————…

    数据库运维 2019年1月1日
    2.6K00
  • php中mysqli处理查询结果集的多个方法-mysql教程

    最近对php查询mysql处理结果集的几个方法不太明白的地方查阅了资料,在此整理记下(相关推荐:mysql教程) Php使用mysqli_result类处理结果集有以下几种方法 fetch_all() 抓取所有的结果行并且以关联数据,数值索引数组,或者两者皆有的方式返回结果集。 fetch_array() 以一个关联数组,数值索引数组,或者两者皆有的方式抓取…

    数据库运维 2019年4月24日
    3.6K00
  • 数据库中的Schema是什么?-mysql教程-

    数据库中schema是数据库对象集合,它包含了表,视图等多种对象。schema就像是用户名,当访问数据表时未指明属于哪个schema,系统就会自动的加上缺省的schema 我们在学习数据库中会碰到一个模糊的概念,它就是Schema。很多人对他都不是很了解,今天将要在文章中为大家详细介绍这个概念,具有一定的参考作用,希望对大家有所帮助。 【推荐课程:数据库教程…

    数据库运维 2019年4月24日
    5.6K00
  • MySQL 闪退服务列表里找不到MySQL MySQL服务无法启动等

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

    2018年9月14日
    4.5K00
  • MySQL5.7版本sql_mode=only_full_group_by问题解决教程-网络运维

    问题: MySQL数据库迁移到MySQL5.7版本后,出现如下报错: 原因分析:MySQL5.7版本默认设置了 mysql sql_mode = only_full_group_by 属性,导致报错。 解决办法: 1、打开MySQL数据库控制台 执行全局sql语句: set   @@sql_mode= ‘STRICT_TRANS_TABLES,N…

    数据库运维 2018年10月17日
    3.4K00

发表回复

登录后才能评论
联系我们

联系我们

18838889666

在线咨询: QQ交谈

邮件:xinyun@88.com

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

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