• Mysql Count的区别


    1. count(1) 和count(*)

    • 执行计划
      从执行计划来看count(1)和count()的效果是一样的。
      当表的数据量大些时(1W以上),对表作分析之后,使用count(1)比使用count(
      )用时多。
      当数据量在1W以内时,count(1)会比count(*)的用时少些。
      总的来说差不了多少。

    • 聚集索引
      如果count(1)是聚集索引时,那肯定是count(1)快,但是差的很小。
      因为count(*),会自动优化指定到那一个字段sql会帮你完成优化的

    因此:在有聚集索引时count(1)和count(*)基本没有差别

    2. count(1) and count(列名)

    count(1) 会统计表中的所有的记录数,包含字段为null 的记录。
    count(字段) 会统计该字段在表中出现的次数,忽略字段为null 的情况。即不统计字段为null 的记录。

    3. count(*) 和 count(1)和count(列名)区别

    • 执行效果
      count(*)包括了所有列,相当于行数,在统计结果的时候,不会忽略为NULL的值。
      count(1)包括了所有列,用1代表代码行,在统计结果的时候,不会忽略为NULL的值。
      count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(null)的计数,即某个字段值为NULL时,不统计。

    • 执行效率
      列名为主键,count(列名)会比count(1)快;
      列名不为主键,count(1)会比count(列名)快;
      如果表多个列并且没有主键,则 count(1) 的执行效率优于 count();
      如果有主键,则 count(主键)的执行效率是最优的;
      如果表只有一个字段,则 count(
      )最优。

  • 相关阅读:
    xss.haozi.me靶机 通关
    dfs之字符串拼接
    PHP连接外部服务器的MySQL参考教程
    遵循3GPP标准,爱浦路的卫星仿真平台已实现8大功能!
    element show-overflow-tooltip 复制
    使用网络摄像头进行眼睛注视估计
    机器学习 | 降维:PCA主成分分析
    UTF-16编码原理讲解
    思考思维(2):《极简思考》结构化思维
    11.LoadRunner录制的方式
  • 原文地址:https://blog.csdn.net/wenzhengzheng/article/details/126598385