分享好友 数据库首页 频道列表

mysql技巧之select count的区别分析

MySQL教程  2015-11-07 21:560

1.测试环境

OS:Linux
DB:mysql-5.5.18
table:innodb存储引擎

表定义如下:

mysql技巧之select count的区别分析

2. 测试场景与分析【统计表group_message的记录数目】

(1)select count(*)方式

mysql技巧之select count的区别分析

(2)select count(1)方式

mysql技巧之select count的区别分析

(3)select count(col_name)方式

分别使用

select count(group_id)

select count(user_id)

select count(col_null)

mysql技巧之select count的区别分析

     通过上述测试结果可以看到,select count(*)和select count(1)都使用了group_id这个最短的二级索引。可能有人会问为啥不用更短的主键索引【int类型】呢,这主要是因为innodb存储引擎下,主键索引实质包含了索引和数据,扫描主键索引实际是扫描物理记录,代价实质是最大的。再来看看几种select count(col_name), count(group_id)使用了最短二级索引,因为该列就是索引列;而count(user_id)则使用了组合索引,由于user_id实质不能利用该索引,但扫描索引也能得到记录数,而且比扫描物理记录代价小,这里应该是mysql的一个优化;count(col_null)则不能使用索引,因为该列含有null值,所以效率最低。另外,对于含有null值的行,count(col_null)实际不会统计,这会与你想统计表记录数目的初衷不符,比如测试表有852226条记录,但col_null列只有1行非空,则统计结果如下:

mysql技巧之select count的区别分析

3.测试结论

mysql中,需要通过selct count 统计表记录数目时,使用count(*)或count(1)就好。

查看更多关于【MySQL教程】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
oracle 常用select sql语句
本人认为很实用的几条语句1)select ... from ...into...2)insert into ...select ...3)select ...from ...left join ...on ...4)case...when...then ...else ... endJava代码 select * from directory_type  where (case when create_date is null then

0评论2023-02-10980

mysql中实现行号,oracle中的rowid oracle select 行号
 mysql中实现行号需要用到MYSQL的变量,因为MySql木有rownumber。 MYSQL中变量定义可以用set @var=0或set @var:=0 可以用=或:=都可以,但是如果变量用在其他语句中,如:select那么必须用:=,因为=会被当作一个比较符号 1 select @rownum:=@rownum+1 as ro

0评论2023-02-09884

MySQL中select语句使用order按行排序
本文介绍MySQL数据库中执行select查询语句,并对查询的结果使用order by 子句进行排序

0评论2016-05-1887

探讨select in 在postgresql的效率问题
这篇文章主要介绍了探讨select in 在postgresql的效率问题 的相关资料,需要的朋友可以参考下

0评论2016-04-28164

基于SQL中SET与SELECT赋值的区别详解
本篇文章是对SQL中SET与SELECT赋值的区别进行了详细的分析介绍,需要的朋友参考下

0评论2015-11-0969

解析MySQL中INSERT INTO SELECT的使用
本篇文章是对MySQL中INSERT INTO SELECT的使用进行了详细的分析介绍,需要的朋友参考下

0评论2015-11-08111

MySQL中select语句介绍及使用示例
数据表都已经创建起来了,我们就可以用自己喜欢的方式对数据表里面的信息进行检索和显示了,下面为大家讲解下MySQL中select语句的应用,感兴趣的碰可以学习下

0评论2015-11-0878

mysql SELECT FOR UPDATE语句使用示例
本文介绍在mysql中使用mysql SELECT FOR UPDATE 语句时的一些问题与解决办法

0评论2015-11-06114

单个select语句实现MySQL查询统计次数
MySQL中查询统计次数往往语句写法很复杂,下文就教您一个只用单个select语句就实现的方法,希望对您能够有所帮助

0评论2015-10-22132

在oracle 数据库查询的select 查询字段中关联其他表的方法
在实际开发过程中,特别是在做数据查询的时候,能够根据动态生成的sql语句将查询的结果转化并返回到业务处理逻辑(或页面展示出来)能大大的减轻业务逻辑的处理复杂度。

0评论2015-09-2484

数据库中的SELECT语句逻辑执行顺序分析
这篇文章主要介绍了数据库中的SELECT语句逻辑执行顺序分析,并列出了一些例子,需要的朋友可以参考下

0评论2015-09-1588

mysql中insert与select的嵌套使用方法
这篇文章主要介绍了mysql中insert与select的嵌套使用方法,代码功能非常实用,需要的朋友可以参考下

0评论2015-09-0940

mysql中insert与select的嵌套使用解决组合字段插入问题
本节主要介绍了mysql中insert与select的嵌套使用解决组合字段插入问题,需要的朋友可以参考下

0评论2015-09-0588

10个mysql中select语句的简单用法
本篇文章主要讲述的是MySQL SELECT句法的简单分析,我们大家都知道MySQL数据库是我们大家经常使用的数据库,其相关的应用也是备受关注的,那么以下的文章主要是对MySQL SELECT句法的简单分析。

0评论2015-08-23107

oracle select执行顺序的详解
本篇文章是对oracle select执行顺序进行了详细的分析介绍,需要的朋友参考下

0评论2015-08-1661

解析oracle对select加锁的方法以及锁的查询
本篇文章是对oracle对select加锁的方法以及锁的查询进行了详细的分析介绍,需要的朋友参考下

0评论2015-08-16116

更多推荐