Select count(*) & Select count(1) & Select count(col)

简介:

历史问题啦,今天拿出来翻翻;

   MyISAM引擎,记录数是结构的一部分,已存cache在内存中;

   InnoDB引擎,需要重新计算,id是主键的话,会加快扫描速度;

   所以select count(*)  MyISAM完胜!

   MyISAM 在有where 条件存在的时候,速度与innodb引擎相当,都需要重新扫描记录,无其他优势;

   对于select count(*) & count(id)效率没有太大差别,都会扫描全表或者where之后的结果;

   select count(*) 会转换为count(1);count(id)只会计算 NOT NULL的值;

   使用注意事项:

   1、除非要统计某列非空值的总数,否则任何情况下一律使用count(*);

   2、除非需求特殊,否则count(*) 不要加where条件(MyISAM)

   3、在没有where条件的情况下,COUNT(*)等于COUNT(主键)优于COUNT(非主键有索引)优于COUNT(非主键无索引)

   4、只要加了WHERE就会降低效率,即使是WHERE 1=1






本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/1347871,如需转载请自行联系原作者

目录
相关文章
|
2月前
count(*) 和 count(1)和count(列名)区别
count(*) 和 count(1)和count(列名)区别
49 0
|
10月前
|
存储 SQL 关系型数据库
count(1)、count(具体字段)和count(*)究竟有什么区别?
count(1)、count(具体字段)和count(*)究竟有什么区别?
103 0
|
数据库 OceanBase
LIMIT_ROW_COUNT
LIMIT_ROW_COUNT
78 1
|
SQL 数据可视化 关系型数据库
count(列名) ,count(1)与count(*) 有何区别?
count(列名) ,count(1)与count(*) 有何区别?
|
SQL 索引
Count(1) Count(0) Count(*) Count(列名)
Count(1) Count(0) Count(*) Count(列名)
140 0
|
存储 SQL 架构师
性能大PK count(*)、count(1)和count(列)
最近的工作中,我听到组内两名研发同学在交流数据统计性能的时候,聊到了以下内容: 数据统计你怎么能用 count(*) 统计数据呢,count(*) 太慢了,要是把数据库搞垮了那不就完了么,赶紧改用 count(1),这样比较快...... 有点儿好奇,难道 count(1) 的性能真的就比 count(*) 要好吗? 印象中网上有很多的文章都有过类似问题的讨论,那 MySQL 统计数据总数 count(*) 、count(1)和count(列名) 哪个性能更优呢?今天我们就来聊一聊这个问题。
性能大PK count(*)、count(1)和count(列)
|
SQL 关系型数据库 MySQL
|
存储 SQL 缓存
count(*)那么慢能用吗,该怎么办呢?
大家好前面我们大概了解了为什么delete from表名,表的大小还是没有变小!以及数据删除流程,数据页空洞,online和inplace。重建表的两种实现方式。今天介绍一下为什么count(*)那么慢。
count(*)那么慢能用吗,该怎么办呢?
|
关系型数据库 MySQL 测试技术
论证select count(*)和select count(1)
论证select count(*)和select count(1)
123 0