百万数据下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

相关推荐

  • 宝塔centos系统导入-ssh命令导入mysql大数据库文件方法教程

    今天主要写mysql在centos下 通过命令导出  导入教程分享 服务器:腾讯云https://curl.qcloud.com/zdLkHNeS 开始: 备份: mysqldump -u数据库名 -p”密码” -h localhost 数据名 > /www/wwwroot/ceshi.com/aiqutui.sq(备份路径) 恢复命令: m…

    2019年4月10日
    4.5K00
  • SqlServer2008数据库占用内存一直增长

    前言 最近碰到一个sqlserver数据库占用内存一直增长。直接到挂机 解决方案1 入Sql server 企业管理器(管理数据库和表的,这个都不知道就不用往下看了),在数据库服务器名称上点击【右键】,选择【属性】,然后,找到【内存】选项,在右边的【使用SWE分配内存】左边把对勾打上。在最大服务器内存(MB)上填入适当的大小(具体填多大,肯定不能超过计算机的…

    数据库运维 2018年9月14日
    3.8K00
  • centos解决mysql-bin.000*占用超大空间的问题

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

    数据库运维 2018年7月9日
    2.5K00
  • mysql更新语句怎么写?-mysql教程-学派吧

    MySQL更新语句也就是MySQL中的update语句,当我们需要更新或者修改表中的数据时,就会使用这个update语句,下面我们就来看一下mysql更新语句的具体写法。 MySQL中update语句用于更新表中的现有数据。亦可用UPDATE语句来更改表中单个行,一组行或所有行的列值。 MySQL中UPDATE语句的语法: 单表 UPDATE [LOW_PR…

    2019年4月9日
    2.3K00
  • navicat for mysql下载安装以及简单的使用教程-navicat-学派吧

    本篇文章主要介绍了navicat for mysql下载安装以及简单的使用,有对novicat for mysql 感兴趣的小伙伴可以参考一下 一:下载Navicat for MySQL 下载地址:http://www.php.cn/xiazai/gongju/757 二:安装Navicat for MySQL 运行 → 下一步 → 点击“我同意” → 选择…

    数据库运维 2018年11月26日
    4.6K00

发表回复

登录后才能评论
联系我们

联系我们

18838889666

在线咨询: QQ交谈

邮件:xinyun@88.com

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

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