当前位置:  数据库>mysql

mysql技巧之select count的区别分析

    来源: 互联网  发布时间:2014-10-11

    本文导语:  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...

1.测试环境

OS:Linux
DB:mysql-5.5.18
table: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)

     通过上述测试结果可以看到,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行非空,则统计结果如下:

3.测试结论

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


    
 
 

您可能感兴趣的文章:

  • Mysql大表查询优化技巧总结及案例分析
  • mysql 服务完全卸载技巧
  • mysql数据库下载安装教程和使用技巧
  • 教你如何快捷的使用cmd访问mysql小技巧
  • MySQL简化输入小技巧
  • mysql复制中临时表的运用技巧
  • 总结MySQL建表、查询优化的一些实用小技巧
  • Mysql 建库建表技巧分享
  • MySQL中视图的使用及多表INNER JOIN的技巧分享
  • 有关mysql的一些小技巧
  • MySQL性能优化的一些技巧帮助你的数据库
  • MySQL中的binlog相关命令和恢复技巧
  • MYSQL常用命令与实用技巧
  • 解析MySQL数据库性能优化的六大技巧
  • MySQL数据库常用操作和技巧(DBA必备知识)
  • MySQL数据库十大优化技巧
  • MySQL索引类型总结和使用技巧以及注意事项
  • 提高MySQL 查询效率的三个技巧第1/2页
  • 101个MySQL优化技巧和提示
  • mysql 超大数据/表管理技巧
  • MySQL复制的概述、安装、故障、技巧、工具(火丁分享)
  • MySQL优化分析器 mysqloa
  • php的慢速日志引起的Mysql错误问题分析
  • MySQL抛出Incorrect string value异常分析
  • MySQL DNS的使用过程详细分析
  • Mysql索引会失效的几种情况分析
  • mysql中limit的用法深入分析
  • MYSQL事务回滚的2个问题分析
  • mysql执行时间为负数的原因分析
  • 基于MySQL数据库复制Master-Slave架构的分析
  • 基于mysql事务、视图、存储过程、触发器的应用分析
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Mysql Select查询执行流程介绍及实例
  • 在MySQL如何实现如:select top 2 * from board; 这样的提取前N条记的功能?
  • Mysql select in 按id排序实现方法
  • php下巧用select语句实现mysql分页查询
  • 单个select语句实现MySQL查询统计次数
  • mysql SELECT语句去除某个字段的重复信息
  • Mysql select语句设置默认值的方法
  • mysql中insert与select的嵌套使用方法
  • mysql中insert与select的嵌套使用解决组合字段插入问题
  • PHP MySQL Select查询示例
  • 解析MySQL中INSERT INTO SELECT的使用
  • MYSQL的select 学习笔记
  • MySQL SELECT同时UPDATE同一张表问题发生及解决
  • 10个mysql中select语句的简单用法
  • UCenter info: MySQL Query Error SQL:SELECT value FROM [Table]vars WHERE noteexists
  • php iis7站长之家
  • 请教 mysql jdbc select 中文问题?
  • MySQL进阶SELECT语法篇
  • MySQL中SELECT+UPDATE处理并发更新问题解决方案分享
  • MySQL中select语句介绍及使用示例
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • Mysql查询错误:ERROR:no query specified原因
  • MySQL 重装MySQL后, mysql服务无法启动
  • php安装完成后如何添加mysql扩展
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin
  • MySQL Workbench的下载安装与使用教程


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3