mysql下count(*)与count(column)区别性能对比

count(*)对行的数目进行计算,包含NULL

count(column)对特定的列的值具有的行数进行计算,不包含NULL值。

count()还有一种使用方式,count(1)这个用法和count(*)的结果是一样的。

关于他们的性能问题

1.任何情况下SELECT COUNT(*) FROM tablename是最优选择;
2.尽量减少SELECT COUNT(*) FROM tablename WHERE COL = ‘value’ 这种查询;
3.杜绝SELECT COUNT(COL) FROM tablename WHERE COL2 = ‘value’ 的出现。

如果表没有主键,那么count(1)比count(*)快。
如果有主键,那么count(主键,联合主键)比count(*)快。
如果表只有一个字段,count(*)最快。

时间: 2024-09-20 21:32:52

mysql下count(*)与count(column)区别性能对比的相关文章

mysql下distinct和group by区别对比

在数据表中记录了用户验证时使用的书目,现在想取出所有书目,用DISTINCT和group by都取到了我想要的结果,但我发现返回结果排列不同,distinct会按数据存放顺序一条条显示,而group by会做个排序(一般是ASC). DISTINCT 实际上和 GROUP BY 操作的实现非常相似,只不过是在 GROUP BY 之后的每组中只取出一条记录而已.所以,DISTINCT 的实现和 GROUP BY 的实现也基本差不多,没有太大的区别,同样可以通过松散索引扫描或者是紧凑索引扫描来实现.

Mysql下count()和sum()区别

要求:查询出2门及2门以上不及格者的平均成绩. 经常会用两种查询语句有两种:  代码如下 复制代码 1. select name,sum(score < 60) ,avg(score)  from result  group by name having sum(score<60) >=2; 再看 算你拥有动物的总数目与"在pet表中有多少行?"是同样的问题,因为每个宠物有一个记录.COUNT(*)函数计算行数,所以计算动物数目的查询应为:  代码如下 复制代码 my

mysql中count(*)和count(id)的区别

mysql查询在分页或者统计某个条件下的记录数,会常用到count(),那么你知道count(*)和count(id)或count(name)等等有什么区别吗?   看看下面这个图,应该就明白了:     count(*)表示所有记录数,包括为空NULL的数据:而count(某个字段),只会计算有效数据的条数.这就是它们之间最主要的区别了. 网上搜索了下,发现各种说法都有: 比如认为COUNT(COL)比COUNT(*)快的: 认为COUNT(*)比COUNT(COL)快的: 还有朋友很搞笑的说

mysql技巧之select count的区别分析_Mysql

1.测试环境 OS:LinuxDB:mysql-5.5.18table:innodb存储引擎 表定义如下: 2. 测试场景与分析[统计表group_message的记录数目] (1)select count(*)方式 (2)select count(1)方式 (3)select count(col_name)方式 分别使用 select count(group_id) select count(user_id) select count(col_null)      通过上述测试结果可以看到,s

mysql中count(id) count(1) count(*)的用法区别

表结构如下:  代码如下 复制代码 mysql> show create table userG; *************************** 1. row ***************************        Table: user Create Table: CREATE TABLE `user` (   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,   `name` varchar(50) NOT NULL,  

sql server中Select count(*)和Count(1)的区别和执行方式

    在SQL Server中Count(*)或者Count(1)或者Count([列])或许是最常用的聚合函数.很多人其实对这三者之间是区分不清的.本文会阐述这三者的作用,关系以及背后的原理.     往常我经常会看到一些所谓的优化建议不使用Count(* )而是使用Count(1),从而可以提升性能,给出的理由是Count( *)会带来全表扫描.而实际上如何写Count并没有区别.     Count(1)和Count(*)实际上的意思是,评估Count()中的表达式是否为NULL,如果为

Select count(*)、Count(1)和Count(列)的区别及执行方式_MsSql

    在SQL Server中Count(*)或者Count(1)或者Count([列])或许是最常用的聚合函数.很多人其实对这三者之间是区分不清的.本文会阐述这三者的作用,关系以及背后的原理.     往常我经常会看到一些所谓的优化建议不使用Count(* )而是使用Count(1),从而可以提升性能,给出的理由是Count( *)会带来全表扫描.而实际上如何写Count并没有区别.     Count(1)和Count(*)实际上的意思是,评估Count()中的表达式是否为NULL,如果为

Select count(*)、Count(1)和Count(列)的区别及执行方式

在SQL Server中Count(*)或者Count(1)或者Count([列])或许是最常用的聚合函数.很多人其实对这三者之间是区分不清的.本文会阐述这三者的作用,关系以及背后的原理. 往常我经常会看到一些所谓的优化建议不使用Count(* )而是使用Count(1),从而可以提升性能,给出的理由是Count( *)会带来全表扫描.而实际上如何写Count并没有区别. Count(1)和Count(*)实际上的意思是,评估Count()中的表达式是否为NULL,如果为NULL则不计数,而非N

sql server中Select count(*)和Count(1)的区别和执行方式_MsSql

    在SQL Server中Count(*)或者Count(1)或者Count([列])或许是最常用的聚合函数.很多人其实对这三者之间是区分不清的.本文会阐述这三者的作用,关系以及背后的原理.     往常我经常会看到一些所谓的优化建议不使用Count(* )而是使用Count(1),从而可以提升性能,给出的理由是Count( *)会带来全表扫描.而实际上如何写Count并没有区别.     Count(1)和Count(*)实际上的意思是,评估Count()中的表达式是否为NULL,如果为