sql count 函数用法

count(*) 会查询所有记录数,,包括为null值的数据;

count(column)不会包含 column值为null的情况;

count(1) 和 count(*)相同,,不同的是,,mysql不同的存储引擎,对count(*)做了不同的优化

阿里开发手册中,,强制要求用count(*),而不是其他两种

count(*)是 SQL92 定义的
标准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关。

 

常用的引擎为InnoDB和MyISAM

InnoDB ; 支持事务,,,行级锁  ,必须进行全表扫描,扫描索引值,,非聚簇索引的叶子只保存,数据位置,而聚簇索引包含整行数据,查询时会找小的索引值进行索引扫描

前提是查询中不包括where以及group by条件语句;

MyISAM : 不支持事务,。,,表级锁,,会将每张表的count值,存贮下来,当访问时,直接返回,但是不能加where(此优化并不会影响数据的准确性,因为他是表级锁,,并发的修改不会发生))

posted @ 2019-10-23 15:46  古月大叔  阅读(5199)  评论(0编辑  收藏  举报