mysql中count的区别

  1. count(1)和count(*)
    1. 从执行计划来看,count(1)和count(*)的效果是一样的
    2. 当表的数据量大些时,对表分析之后,使用count(1)还要比使用count(*)用时多
    3. 当数据量在1W以内时,count(1)会比count(*)的用时少,不过也差不多
    4. 如果count(1)是聚集索引时,那肯定是count(1)快,但是差的很小
    5. 因为count(* )会自动优化到指定到哪一个字段,所以没必要去count(1),使用count(* ),sql会帮你完成优化的
    6. 因此,在有聚集索引时count(1)和count(*)基本没有区别
  2. count(1)和count(字段)
    1. count(1)会统计表中的所有的记录数,包含字段为null的记录
    2. count(字段)会统计该字段在表中出现的次数,忽略字段为null的情况,即不统计字段为null的记录
  3. count(*)和count(1)和count(字段)的区别
    1. 执行效果上
      1. count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略null的值
      2. count(1)用1代表代码行,在统计结果的时候,不会忽略NULL值
      3. count(字段):只包括列名的那一列,在统计结果的时候,会忽略列值为空(这里的空不是指空字符串或者0,而是表示null)的计数,即某个字段值为null时,不统计
    2. 执行效率上
      1. 列名为主键时,count(列名)会比count(1)快
      2. 列名不为主键时,count(1)会比count(列名)快
      3. 如果表多个列并且没有主键,则count(1)的执行效率优于count(*)
      4. 如果有主键,则select count(主键)的执行效率最优
      5. 如果表只有一个字段,则select count(*)最优

相关推荐

  1. mysqlcount区别

    2024-07-11 14:06:03       19 阅读
  2. MYSQL--count(*) 和 count(1)和count(列名)区别

    2024-07-11 14:06:03       46 阅读
  3. mysql统计数据count

    2024-07-11 14:06:03       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 14:06:03       51 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 14:06:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 14:06:03       44 阅读
  4. Python语言-面向对象

    2024-07-11 14:06:03       55 阅读

热门阅读

  1. springboot对象参数赋值变化

    2024-07-11 14:06:03       14 阅读
  2. 什么是数据挖掘(python)

    2024-07-11 14:06:03       22 阅读
  3. python的类变量和实例变量

    2024-07-11 14:06:03       21 阅读
  4. JDK-CompletableFuture

    2024-07-11 14:06:03       21 阅读
  5. Python 获取 SQL 指纹和 HASH 值

    2024-07-11 14:06:03       21 阅读
  6. 井字棋 AI-Python

    2024-07-11 14:06:03       21 阅读
  7. android解锁remount

    2024-07-11 14:06:03       24 阅读
  8. 洛谷 P3008 [USACO11JAN] Roads and Planes G

    2024-07-11 14:06:03       21 阅读
  9. 2.Spring的IOC容器里面加入对象的常见方式

    2024-07-11 14:06:03       23 阅读
  10. React基础学习-Day02

    2024-07-11 14:06:03       15 阅读