zoukankan      html  css  js  c++  java
  • count(*) count(id) count(1) count(字段)

    最近在研究Mysql的时候针对这几个的效率问题,就此查了一些文章,总结了一下。


    count(id)
      InnoDB引擎会遍历整张表,把每一行行的id值全部取出来,返回给server层,server层拿到id后,判断是不可能为空的,就按行累加。
    count(1)
      InnoDB引擎遍历整张表,但不取值,server层对于返回的每一行,放一个数字 1 进去,判断是不可能为空的,累计增加。
    count(字段)
      1.如果这个字段是定义为not null的话,一行行地从记录里面读出这个字段,判断不能为null,按行累加
      2.如果这个字段定义允许为null的话,判断到有可能是null,还要把值取出来在判断一下,不是null才累加。
    count(*)
      不会把全部的字段取出来,而是做专门的优化,不取值,count(*)肯定不是null,按行累加。

    总结:count(*)>count(1)>count(id)>count(字段)

  • 相关阅读:
    伍佰《突然的自我》
    .NET常见ORM框架
    并发和压测工具
    底层源码调试工具
    c 冒泡排序
    c 指定范围的质数
    c 筛法列举质数
    c 牛顿法求方程近似解
    c 二分法求方程近似解
    css选择器 及其权重
  • 原文地址:https://www.cnblogs.com/arebirth/p/mysqlcountfast.html
Copyright © 2011-2022 走看看