对count查询进行优化

select count(*) from employees where id > 40000;

将其优化为下列语句

select (select count(*) from employees) - count(*) from employees where id <= 40000;

进行测试


由于id>40000的数据有90551条,id<40000的数据有20557条,所以说如果进行一个相减的操作是否可以优化它呢?

InnoDB引擎

设计该employees表为InnoDB引擎,查看它的执行时间。
上面两条语句(15,16)是InnoDB引擎的执行

可以发现在将原语句修改后,执行时间由0.038s变为了0.050s,变慢了。这没优化到啊?
利用explain语句查看执行计划,发现原语句扫描了55493行数据,并且type类型为range,使用到了id_index索引。修改后的语句SUBQUERY的rows显示扫描了全表110986条数据,PRIMARY的rows扫描了19623行数据,意思也就是说在减号的左边count(*)也是做了全表扫描的,这样子根本不能优化。

原语句:

修改后的语句:

MyISAM引擎

将employees表修改为MyISAM引擎后,查看执行时间
上面两条语句(17,18)是MyISAM引擎的执行

可以发现在将原语句修改后,执行时间由0.034s变为了0.004s,变快了好多。
去查看执行计划

原语句:

MyISAM引擎默认是保存有一份count(*)的结果的,但是如果有where条件的话,MyISAM对其的操作是全表扫描。

修改后的语句:


可以发现,扫描到的rows居然为1,这是因为MyISAM默认存有一份count(*),所以说,在MyISAM引擎下如果这样子去优化count(),可以大大的提高查询速度。

MySQL优化之count优化相关推荐

  1. MySQL · 引擎特性 · InnoDB COUNT(*) 优化(?)

    在5.7版本中,InnoDB实现了新的handler的records接口函数,当你需要表上的精确记录个数时,会直接调用该函数进行计算. 使用 实际上records接口函数是在优化阶段调用的,在满足一定 ...

  2. bash mysql count()_【MySQL】性能优化之 count(*) VS count(col)

    优化mysql数据库时,经常有开发询问 count(1)和count(primary_key) VS count(*)的性能有何差异?看似简单的问题,估计会有很多人对此存在认知误区: 1. 认为cou ...

  3. mysql count优化_MySQL count()函数及其优化

    很简单,就是为了统计记录数 由SELECT返回 为了理解这个函数,让我们祭出 employee_tbl 表 所有记录 统计行的总数 计算 Zara 的记录数 注意:由于 SQL 查询对大小写不敏感,所 ...

  4. mysql多次join后count优化_mysql join count 优化案例

    记录一个优化sql的实际案例 三张表, 表结构, 索引如下: tb_phoneback_apply有user_id, handle_userid 索引 以及一个 status 和 create_tim ...

  5. 【mysql学习篇】count()优化分析

    一.count()查询优化 -- 临时关闭mysql查询缓存,为了查看sql多次执行的真实时间 mysql> set global query_cache_size=0; mysql> s ...

  6. mysql中order by优化的那些事儿

    为了测试方便和直观,我们需要先创建一张测试表并插入一些数据: CREATE TABLE `shop` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '记 ...

  7. mysql数据库优化课程---16、mysql慢查询和优化表空间

    mysql数据库优化课程---16.mysql慢查询和优化表空间 一.总结 一句话总结: a.慢查询的话找到存储慢查询的那个日志文件 b.优化表空间的话可以用optimize table sales; ...

  8. zabbix mysql 8g优化_Zabbix分区优化

    Zabbix分区优化 Zabbix数据库优化 目的: 快速清理历史数据,并减少数据存储容量 方法: 历史表使用分区表(删除分区表速度快),使用Tokudb引擎(适合大量insert少量update和s ...

  9. 开启Mysql慢查询来优化mysql

    开启Mysql慢查询来优化mysql 优化sql语句是优化数据库的一个很重要的方面,那么怎么发现那些耗时耗资源的sql语句呢,开启Mysql慢查询! 1.查看是否开启慢查询,默认情况下是关闭的.你的m ...

最新文章

  1. python条件查询 或 in_64.Python中ORM查询条件:in和关联模型
  2. 科大星云诗社动态20210517
  3. 9个细节告诉你,达摩院过去一年做了啥
  4. 报错,Error in created hook: “SyntaxError: Unexpected token o in JSON at position 1“
  5. PGPool使用限制
  6. BEAMnrc参数设置_MainInputs(3)
  7. idea类和方法注释模板配置
  8. Linux操作命令提示符
  9. 微信小程序点播音频服务器,微信小程序无法播放本地音频
  10. Mac安装port(port:command not found解决办法)
  11. install package vif包_ggpubr: Publication Ready Plots (发表级质量的作图R包)
  12. python3 把类似这样的 '\xe5\xae\x9d\xe9\xb8\xa1\xe5\xb8\x82' 转换成汉字
  13. mysql最大整数类型_MySQL教程19-整数类型
  14. pip安装tensorflow报错:could not find a version that satisfies the requirement grpcio=1.8.6
  15. iOS-使用Masonry布局不能立即获取到frame
  16. Dr.Cleaner:清理磁盘和内存,深度卸载应用程序,监控CPU使用率和网络占用情况
  17. 计算机科学与技术专业学建模嘛,工学学科(基本专业四):计算机科学与技术专业介绍...
  18. 推荐个比较好用的协同办公软件,帮助你高效办公
  19. Mac没有winnt格式_在Mac上轻松将MOV转换为MP4的四大免费方法
  20. html5的页面放到服务器video标签不播放

热门文章

  1. python gdb调试_使用GDB调试Python程序
  2. ABB robotstudio 安装及下载
  3. java的%d和%f 是什么意思
  4. 【HOOK切换微信聊天窗口】C++
  5. 酷狗小试页面和简写代码
  6. oracle weblogic 版本查看,查看weblogic版本号
  7. stalled时间过长引起的一次线上事故
  8. 《高等代数学》(姚慕生),例1.5.7
  9. influxDB 基础了解
  10. vs报错:错误C2440