sem和网站建设的关系,wordpress用户权限,十堰秦楚网,做热点图现在用什么网站在日常的mysql使用中#xff0c;我们经常会看到SELECT COUNT(*)、SELECT COUNT(1)等查询语句#xff0c;他们到底有什么区别呢#xff1f;今天我就来总结下。 我们先从函数的含义说起#xff1a; count() 统计满足查询条件的结果集的总行数(包含null)#xff0c;其中count…在日常的mysql使用中我们经常会看到SELECT COUNT(*)、SELECT COUNT(1)等查询语句他们到底有什么区别呢今天我就来总结下。 我们先从函数的含义说起 count() 统计满足查询条件的结果集的总行数(包含null)其中count(1)和count()的处理逻辑完全相同count(column) 如果列定义时不允许为null那么统计满足查询条件的不为null的总行数 由于innodb不能像MyISAM那样记录表的总行数所以为了方便统计行数MySQL 5.7.18后innodb对count(*)进行了优化 原则 基于占用空间最小的索引进行统计减少磁盘IO如果where条件能够确定合适的辅助索引就通过辅助索引进行数据统计。 操作 1.如果只有聚簇索引那么直接通过聚簇索引统计总行数。 2.因为一般情况下二级索引占用空间比聚簇索引小所以如果存在二级索引一般会寻找占用空间最小的二级索引进行统计。
最后说下性能 count(*) count(1) count(column) mysql文档中提到了count()和count(1)两者的统计方式完全相同不存在任何性能差异InnoDB handles SELECT COUNT() and SELECT COUNT(1) operations in the same way. There is no performance difference.count(column) 会慢些因为还需要判断列是否为null。
reference mysql官方文档mysql count说明