**1、count (1)、count (*) 与 count (列名) 的区别**

表 count(1) count(*) count (列名)
作用 统计表中的所有的记录数 会统计表中的所有的记录数 统计该字段在表中出现的次数
是否包含字段为 null 包含 包含 不包含
区别 count (1) 和 count (*) 基本没差别,实际建议count (*) count (1) 和 count (*) 基本没差别实际建议count (*)

效率:

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

2、MYSQL 中Null 和空串的区别,以及比较

表 null 空字符串
含义 “没有值” 或 “未知值”,且它被看作与众不同的值。 空字符串
比较 IS NULL或者IS NOT NULL =、< 或!=

如果字符串和Null比较,会发生什么情况?
注意:=和<=>的区别

3、各函数对Null的处理

函数 效果
AVG () 忽略 NULL 值,而不是将其作为 “0” 参与计算
COUNT(*) 不忽略NULL 值
COUNT (字段名) 忽略NULL 值
SUM () 忽略 NULL 值。且当对多个列运算求和时,如果运算的列中任意一列的值为 NULL,则忽略这行的记录。
GROUP BY 两个 NULL 值视为相同。
如果运行 ORDER BY ... ASC,则 NULL 值出现在最前,若运行 ORDER BY ... DESC,则 NULL 值出现在最后。
distinct 无论遇到多少个空值,结果中只返回一个 null

附、参考:

  1. count (1)、count (*) 与 count (列名) 的执行区别 - iFuMI 的博客 - CSDN 博客
    注:很棒的一篇文章。
  2. 高性能 MySQL——Count (1) OR Count (*)? - 知乎
    注:原文有错,不过还是值得参考。
  3. SQL 中的 SUM ()、AVG ()、COUNT () 等聚集函数对 NULL 值的处理方法 - J__Max 的博客 - CSDN 博客
  4. MySql 判断是否为 null 或空字符串 - bestlove12345 的博客 - CSDN 博客
  5. MySql 中判断字符串相等 - 洋成林 - CSDN 博客

MySql中的count、NULL和空串的区别的更多相关文章

  1. 用count(*)还是count(列名) || Mysql中的count()与sum()区别

    Mysql中的count()与sum()区别   首先创建个表说明问题 CREATE TABLE `result` (   `name` varchar(20) default NULL,   `su ...

  2. 重新认识MySQL中的COUNT语句

    在数据库的增删改查操作中,使用最频繁的就是查询操作. 而在所有查询操作中,统计数量操作更是经常被用到. 关于数据库中行数统计,无论是MySQL还是Oracle亦或者是SqlServer,都有一个函数可 ...

  3. mysql中的where和having子句的区别

    mysql中的where和having子句的区别 having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句 ...

  4. MySQL中char、varchar和text的区别

    三者空间占用方面: char:存储定长数据很方便,CHAR字段上的索引效率极高,可以有默认值,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间(自动用空格填 ...

  5. mysql中 REPLACE INTO 和 INSERT INTO 的区别

    mysql中 REPLACE INTO 和 INSERT INTO 的区别 REPLACE INTO 和 INSERT INTO 功能类似,都是像表中插入数据,不同点在于:REPLACE INTO 首 ...

  6. MySQL中TEXT与BLOB字段类型的区别

    这篇文章主要介绍了MySQL中TEXT与BLOB字段类型的区别,本文总结了6大区别,需要的朋友可以参考下   在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程 ...

  7. mysql中 drop、truncate和delete的区别

    mysql中drop.truncate和delete的区别 (1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作. TRUNC ...

  8. mysql中的count(primary_key)、count(1)、count(*)的区别

    表结构如下: mysql> show create table user\G; *************************** 1. row ********************** ...

  9. 【网络收集】MySql中IS NOT NULL与!=NULL的区别

    在mysql中,筛选非空的时候经常会用到is not null和!=null,这两种方法单从字面上来看感觉是差不多的,其实如果去运行一下试试的话差别会很大!为什么会出现这种情况呢?null 表示什么也 ...

随机推荐

  1. vmware 安装centos7 阿里云镜像 虚拟机

    一.资源准备: 1.vmware软件下载: 百度自行下载安装 2.阿里云镜像地址:https://opsx.alibaba.com/mirror 1).镜像下载步骤: 点击计入centos: 这里直接 ...

  2. C++指针图解

  3. ES6-21.class基本语法

    1.简介(详情参考) class是构造函数的语法糖. class的constructor方法内的实现,就是原来构造函数的实现. class内的所有方法都是在prototype上的,就是原来构造函数的p ...

  4. mysql日志文件路径

    SHOW VARIABLES LIKE 'general_log_file';日志文件路径SHOW VARIABLES LIKE 'log_error';错误日志文件路径SHOW VARIABLES ...

  5. Active Directory 常用属性

    1.获取DirectoryEntry string str = string.Empty; string strPath = @LDAP://testDomain.com.mo; string ad  ...

  6. 重新梳理一下adb操作app(golang版)

    主要参考我之前整理的内容https://www.cnblogs.com/pu369/p/10490668.html,梳理简化一下思路,以便于用最简单的代码来应对无聊人士的要求. 需求主要是:打开手机. ...

  7. windows游戏编程 创建WIN32一个HelloWOrld程序

    本系列文章由jadeshu编写,转载请注明出处.http://blog.csdn.net/jadeshu/article/details/22449085 作者:jadeshu   邮箱: jades ...

  8. Java 方法的重写

    方法重写规则: 1.子类要重写的方法与父类方法具有完全相同的返回类型+方法名称+参数列表: 2.子类要重写的方法的访问权限大于或者等于父类方法的访问权限: 3.子类要重写的方法不能抛出比父类方法更大的 ...

  9. MySQL 取分组后每组的最新记录

    修改<常用SQL之日期格式化和查询重复数据>中表test1的创建时间,修改后的测试数据如下: 以姓名分组后提取每组最新创建的记录: SELECT a.* FROM test1 AS a, ...

  10. window.innerHeight与document.documentElement.clientHeight与document.body.clientHeight区别

    window.innerHeight属于BOM(浏览器对象模型),获取的高度包含横向滚动条 document.documentElement.clientHeight属于文档对象模型,不包含横向滚动条 ...