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,如需转载请自行联系原作者

目录
相关文章
|
1月前
|
SQL 数据库
INTO SELECT
【11月更文挑战第10天】
30 3
|
1月前
|
存储 SQL 关系型数据库
SELECT INTO
【11月更文挑战第08天】
34 2
|
2月前
|
前端开发 容器
select
【10月更文挑战第20天】
42 5
|
5月前
count(*) 和 count(1)和count(列名)区别
count(*) 和 count(1)和count(列名)区别
254 0
|
数据库 OceanBase
LIMIT_ROW_COUNT
LIMIT_ROW_COUNT
101 1
|
SQL 数据可视化 关系型数据库
count(列名) ,count(1)与count(*) 有何区别?
count(列名) ,count(1)与count(*) 有何区别?
|
数据库 索引
SELECT
SELECT
73 0
|
SQL 索引
Count(1) Count(0) Count(*) Count(列名)
Count(1) Count(0) Count(*) Count(列名)
169 0
|
存储 前端开发 JavaScript
select2 使用详解
select2 使用详解
|
存储 SQL 架构师
性能大PK count(*)、count(1)和count(列)
最近的工作中,我听到组内两名研发同学在交流数据统计性能的时候,聊到了以下内容: 数据统计你怎么能用 count(*) 统计数据呢,count(*) 太慢了,要是把数据库搞垮了那不就完了么,赶紧改用 count(1),这样比较快...... 有点儿好奇,难道 count(1) 的性能真的就比 count(*) 要好吗? 印象中网上有很多的文章都有过类似问题的讨论,那 MySQL 统计数据总数 count(*) 、count(1)和count(列名) 哪个性能更优呢?今天我们就来聊一聊这个问题。
性能大PK count(*)、count(1)和count(列)