`
cectsky
  • 浏览: 45741 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

【mysql】count 联想到的

阅读更多

今天使用count的时候发现了一些问题。回顾一下,温故而知新,可以为师矣~酷 <2,0>

 

 

语法: COUNT(expr)

<PS:count is a kind of aggregate functions in mysql.也就是我们说的group by配合使用的>

 

Returns a count of the number of non-NULL values of expr in the rows retrieved by a SELECT statement. The result is a BIGINT value.

 

COUNT(*) is somewhat different in that it returns a count of the number of rows retrieved, whether or not they contain NULL values.

 

COUNT(*) is optimized to return very quickly if the SELECT retrieves from one table, no other columns are retrieved, and there is no WHERE clause. For example:

 

 

mysql> SELECT COUNT(*) FROM student;

 

 

 This optimization applies only to MyISAM tables only, because an exact row count is stored for this storage engine and can be accessed very quickly. For transactional storage engines such as InnoDB, storing an exact row count is more problematic because multiple transactions may be occurring, each of which may affect the count.

摘了一部分官方doc,重点词汇已经加粗了.

 

想说的是:

1、count(*) 使用场合:MyISAM引擎、没有where条件的sql,这种情况mysql是做过优化的。

   目前市面上充斥着用count(具体的列)替换count(*) 可以带来性能提升的言论,其实不然,这和store engine有莫大的关系,晚些时候我再写点关于InnoDB and MyISAM的一些区别。

    我做了一个测试,数据114w,

    count(1) : 487 ms

    count(col1) : 531ms

    count(*):   489ms

2、count(*) 返回记录和是否是null无关

    比如一个Table test(col1,col2) 数据只有2条,都为null,null

    

mysql > select count(*) from test;
mysql > select count(col1) from test;

 结果在本文第一行末尾已经给出,看看你能张口说出来不? 哈哈吻

 

 

 

 

0
3
分享到:
评论

相关推荐

    联想输入 输入框提示 自动完成(php mysql jquery)

    标题 "联想输入 输入框提示 自动完成(php mysql jquery)" 涉及的技术主要集中在前端的用户体验优化和后端的数据交互上。这种功能常见于许多网站和应用程序的搜索框,用户在输入时,系统会根据已输入的部分文字提供...

    详解 MySQL中count函数的正确使用方法

    在MySQL中,当我们需要获取某张表中的总行数时,一般会选择使用下面的语句 select count(*) from table; 其实count函数中除了*还可以放其他参数,比如常数、主键id、字段,那么它们有什么区别?各自效率如何?我们...

    mysql count提高方法总结

    在MySQL数据库操作中,`COUNT()` 函数是用于统计表中行数或特定列值的个数,它在数据分析和报表生成中扮演着重要角色。然而,当处理大量数据时,`COUNT()` 的效率就显得尤为重要。本文将深入探讨如何优化 `COUNT()` ...

    分析MySQL中优化distinct的技巧

    用户遇到了一个问题:对一个10G以上的单表`user_access_xx_xx`执行`SELECT COUNT(DISTINCT nick)`以统计唯一用户访问(UV)时,即使有`nick`字段的索引,执行计划仍然显示全索引扫描,导致服务器性能受到严重影响,...

    聊聊MySQL的COUNT(*)的性能

    接下来我们就来聊一聊MySQL中统计总行数的方法和性能。 count(*),count(1),count(主键)哪个更快? 1、建表并且插入1000万条数据进行实验测试: # 创建测试表 CREATE TABLE `t6` ( `id` int(11) NOT NULL AUTO_...

    mysql SELECT FOUND_ROWS()与COUNT()用法区别1

    在MySQL数据库中,`SELECT FOUND_ROWS()` 和 `COUNT(*)` 都是用来获取数据表中记录数量的方法,但它们之间存在一些关键的区别。了解这些差异对于优化查询性能和满足特定需求至关重要。 首先,`COUNT(*)` 是一个标准...

    mysql-常见问题,索引优化

    1. 关于MySQL `count(distinct)` 的逻辑bug 在执行`count(distinct)`查询时,MySQL可能会遇到性能问题,尤其是在处理大量数据时。这是因为MySQL在计算唯一值时没有利用索引,导致全表扫描。为优化此操作,可以尝试...

    mySQL count多个表的数据实例详解

    MySQL中的多表COUNT查询是数据库操作中常见的需求,特别是在处理涉及多个数据源的复杂业务场景时。本实例主要探讨如何通过SQL语句一次性统计多个表中的数据,避免频繁执行单表查询,从而提高效率。 首先,我们要...

    mybatis连接MySQL8出现的问题解决方法

    在使用MyBatis连接MySQL8时,执行到数据库查询前均正常,但进行查询时,便卡主没有反应了。设置了日志、try catch等也不报错,页面就在那一直转。之前MyBatis自动生成的代码都是正常的,但是在测试类中使用...

    PowerBuilder中使用JDBC连接MYSQL无法使用COUNT(*)MAX()函数

    在探讨如何在PowerBuilder通过JDBC连接MySQL时正确使用`COUNT(*)`与`MAX()`等聚合函数之前,我们首先需要了解这些技术的基本概念及其应用场景。 ### PowerBuilder简介 PowerBuilder是一种快速应用开发(RAD)环境...

    64位的Mysql安装软件

    MySql安装软件,一直next安装就可以了

    Mysql5.7入门到精通PDF带目录 高清

    SELECT语句是SQL中最复杂的部分,它涉及到多表联接、子查询、聚合函数(COUNT,SUM,AVG,MAX,MIN)以及排序和分组。 事务处理是确保数据一致性的重要机制,MySQL 5.7支持ACID(原子性、一致性、隔离性和持久性)...

    MySQL中count(*)、count(1)和count(col)的区别汇总

    在MySQL中,COUNT()函数是用于统计满足特定条件的行数。这个函数在数据库查询中十分常见,尤其在数据分析和报表生成时。本篇文章将详细解释COUNT(*)、COUNT(1)以及COUNT(column)这三种不同用法的区别。 1. COUNT(*)...

    mysql count详解及函数实例代码

    SELECT 从一个表中检索,而不检索其它的列,并且没有 WHERE子句时, COUNT(*)被优化到最快的返回速度。 例如: mysql&gt; SELECT COUNT(*) FROM student; COUNT(DISTINCT 字段)这个优化仅适用于 MyISAM表, 原因是这些...

    手把手教你mysql移植到ARM开发板

    MySQL移植到ARM开发板详细教程 本文将一步一步地记录 MySQL 移植到 ARM 开发板的全过程,详细到具体输入命令。为帮助读者更好地理解和掌握 MySQL 移植过程,我们将对每个步骤进行详细的解释。 步骤1: 安装ncurse库...

    关于mysql中innodb的count优化问题分享

    MySQL中的InnoDB存储引擎在处理`COUNT(*)`查询时,会根据不同的索引类型和查询条件来决定执行效率。在优化`COUNT(*)`查询时,理解InnoDB的聚集索引(Clustered Index)和辅助索引(Secondary Index)的工作原理至关...

    Mysql中的count()与sum()区别详细介绍

    首先创建个表说明问题 代码如下: CREATE TABLE `result` ( `name` varchar(20) default NULL, `subject` varchar(20) default NULL, `score` tinyint(4) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 插入...

    为什么阿里巴巴禁止使用 count(列名)或 count(常量)来替代 count(*)1

    在MySQL中,不同的存储引擎(如InnoDB和MyISAM)对`COUNT(*)`的处理方式也有所不同。MyISAM由于使用表级锁,可以在没有`WHERE`子句的情况下直接返回预先计算好的行数,而InnoDB支持事务和行级锁,无法做这样的优化,...

    MYSQL

    4.16.1 从一个 3.22 版本升级到 3.23 4.16.2 从一个 3.21 版本升级到 3.22 4.16.3 从一个 3.20 版本升级到 3.21 4.16.4 升级到其他的体系结构 5 MySQL 与标准的兼容性? 5.1 MySQL对ANSI ...

Global site tag (gtag.js) - Google Analytics