zoukankan      html  css  js  c++  java
  • count(1) AND count(*) 对比

    相信很多小伙伴都想知道count(1) 和 count(*) 的速度问题 ,今天我给大家做一下测试。我这里测试的是MySql数据库

    声明:测试之前

    我数据库表里面有100万条数据。我们先来测试count(*)

    可以看出,count(*) 用时间差不多15秒,下面我们看一下count(1)

    看到这我知道很多小伙伴还是找不到心里的答案,上面他可有一些客观原因。都是电脑重启后测试的,电脑重启后。肯定会加载启动项。所以效率上肯定有所差异。然而我再重启电脑后测试的select count(1) from test 第一个用时

    34秒。所以上面做一个了解。下面我们看看电脑运行处于平稳状态下的对比,请看第一个对比count(*) 5.49 count(1) 5.11

    别着急。俗话都是三局两胜,五局三胜,我们看第二次count(*) 4.86 count(1) 5.64

    再看第三次count(*) 4.92 count(1) 4.39

    第一个总结:count(*)  count(1)  在没条件的情况下两者没有什么区别
    然在上面是没有条件的。下面是有条件的

    我对比了两次,可以看出count(*) 快于count(1),  下面来解释一下

    count(1) 和count(*) 对比

    如果你数据库没有主键count(1) 比count(*) 快,如果有主键主键作为条件count() 那么count(1) 比count(*) 快。

    如果表里面只有一个字段那么是count(*)最快

    count 解释

    count(*) 返回表中所有存在行的总数包括null,然而count(1) 返回的是去除null以外的所有行的总数。有默认值的也会被记录

    这下就对count 有一定的了解的把。可以动手测试一下

    最后总结三条经验,(这个也是好久之前在网上看到的,不过本人亲自测试过)

    1.任何情况下select count(*) from table 最优选择

    2.减少select count(*) from table where condition = ? 这样的查询

    3.杜绝select count(colunm) from table
    ---------------------
    作者:yuan_ren_sheng
    来源:CSDN
    原文:https://blog.csdn.net/yuan_ren_sheng/article/details/81105306
    版权声明:本文为博主原创文章,转载请附上博文链接!

    上天入地 无所不能
  • 相关阅读:
    Nginx配置图片请求
    Nginx 配置浏览Linux 系统目录并下载文件
    SpringBoot + Dubbo + Zookper 整合
    mysql 随机选取一条符合条件的记录
    linux 安装rabbitMQ详细教程
    spring boot 实现redis 的key的过期监听,执行自己的业务
    springboot 配置将info、error、debug 分别输出到不同文件
    使用 mvn install 命令将本地jar包注册到本地maven仓库
    关于Snowflake 生成53位ID
    spring boot 或 spring 集成 atomikos jta 完成多数据源事务管理
  • 原文地址:https://www.cnblogs.com/superduan/p/11260315.html
Copyright © 2011-2022 走看看