COUNT(*)与COUNT(COL)
网上搜索了下,发现各种说法都有:比如认为COUNT(COL)比COUNT(*)快的;认为COUNT(*)比COUNT(COL)快的;还有朋友很搞笑的说到这个其实是看人品的。
在不加WHERE限制条件的情况下,COUNT(*)与COUNT(COL)基本可以认为是等价的;
但是在有WHERE限制条件的情况下,COUNT(*)会比COUNT(COL)快非常多;(待测)
具体的数据参考如下:
[SQL] select count(*) from campaign_content_report (存在主键)
10次测试
最快时间: 0.011ms
最慢时间: 0.908ms (应该很服务器响应时间有关)
命中最多的范围:0.011ms~0.014ms
[SQL] select count(*) from campaign_content_report where campaign_id = '11081911350290' (存在主键)
受影响的行: 0
最快时间: 0.014ms
最慢时间: 0.024ms
[SQL] select count(campaign_id) from campaign_content_report where campaign_id = '11081911350290'
受影响的行: 0
最快时间: 0.014ms
最慢时间: 0.019ms
COUNT(*)通常是对主键进行索引扫描,而COUNT(COL)就不一定了,另外前者是统计表中的所有符合的纪录总数,而后者是计算表中所有符合的COL的纪录数。还有有区别的。
如果表没有主键,那么count(1)比count(*)快。
如果有主键,那么count(主键,联合主键)比count(*)快。
如果表只有一个字段,count(*)最快。
相关推荐
在MySQL数据库中,优化`DISTINCT`操作是一个关键的性能提升策略,特别是在处理大量数据时。上述场景中,用户遇到了一个问题:对一个10G以上的单表`user_access_xx_xx`执行`SELECT COUNT(DISTINCT nick)`以统计唯一...
SQL 查询优化(提高 MySQL 数据库查询效率的几个技巧) 在 MySQL 数据库中,查询优化是一个非常重要的方面。在实际应用中,高效的查询可以提高整个系统的性能和响应速度。下面我们将介绍几个提高 MySQL 数据库查询...
从执行计划、SELECT语句、IN和EXIST语句、LIMIT语句、RAND函数、Order by、Group by、Distinct和Count等方面对MySQL数据库优化进行了详细的讲解。 一、执行计划 执行计划是MySQL数据库优化的重要步骤。执行计划...
通过遵循上述查询优化和 SQL 编写注意事项,我们可以提高 MySQL 的查询效率,减少数据库的负载。但是,需要注意的是,索引不是越多越好,需要根据实际情况选择合适的索引方式。同时,SQL 编写也需要遵循一定的规范,...
### DISTINCT优化之MySQL官方文档翻译解析 #### 一、引言 在数据库查询操作中,经常需要使用`DISTINCT`关键字来去除重复记录,确保结果集中的每一条记录都是唯一的。然而,在某些场景下,使用`DISTINCT`可能会导致...
### MySQL优化、问题案例分析 #### 案例一:索引优化 ##### 问题描述 用户系统响应缓慢,数据库CPU占用率高达100%。经排查发现,数据库中有大量执行时间超过2秒的慢SQL语句。具体示例如下: ```sql SELECT uid ...
### MySQL优化文档知识点详解 #### 一、查询条件应按照表中索引查询 在MySQL数据库操作中,索引的设计与使用对于查询性能至关重要。合理的索引能够显著提高查询速度,减少I/O操作次数,从而降低数据库服务器负载。...
MySQL数据库设计与优化是数据库管理中的重要环节,它关乎到系统的性能、稳定性和可扩展性。本讲座由叶金荣分享,主要涵盖了多个关键方面,包括规范、基础规范、命名规范、库表规范、字段规范、索引规范以及开发环境...
MySQL数据库在日常使用中会遇到各种问题,其中索引优化是提升数据库性能的关键环节。本文将探讨MySQL的一些常见问题,特别是与索引相关的优化策略。 1. 关于MySQL `count(distinct)` 的逻辑bug 在执行`count...
### MySQL 进阶优化知识点详解 #### 一、SQL语句优化原则与实践 在进行MySQL性能优化时,首先需要了解的是SQL语句优化的基本原则。优化的目标是提高查询效率,减少不必要的数据处理,从而提升数据库的整体性能。...
01-MySQL优化大的思路.wmv 02-Awk简洁入门.wmv 03-观察服务器周期性变化.wmv 04-观察MySQL进程状态.wmv 05-列选取原则.wmv 06-多列索引生效规则.wmv 07-多列索引实验.wmv 08-商城多列索引实验.wmv 09-聚簇索引概念....
MySQL中的InnoDB存储引擎在处理`COUNT(*)`查询时,会根据不同的索引类型和查询条件来决定执行效率。在优化`COUNT(*)`查询时,理解InnoDB的聚集索引(Clustered Index)和辅助索引(Secondary Index)的工作原理至关...
### MySQL Key Cache 优化详解 在MySQL数据库管理系统中,针对不同的存储引擎,有着不同的缓存机制来提升查询性能。本文将重点围绕MyISAM表类型的key cache进行详细讲解,并涉及InnoDB存储引擎的相关特性,以及...
2. SQL语句优化:在MySQL中,SQL语句的执行效率直接关系到数据库的性能。通过使用慢查询日志和相关分析工具如mysqldumpslow,可以监控效率低下的SQL语句。通过explain命令分析SQL的执行计划,可以了解查询优化的方向...
在MySQL数据库操作中,`COUNT()` 函数是用于统计表中行数或特定列值的个数,它在数据分析和报表生成中扮演着重要角色。然而,当处理大量数据时,`COUNT()` 的效率就显得尤为重要。本文将深入探讨如何优化 `COUNT()` ...
### MySQL数据库In子句优化详解 #### 一、引言 在MySQL数据库的实际应用中,`IN`子句被广泛用于处理多个值的情况。当涉及到大量数据时,如何有效地使用`IN`子句成为了提高查询性能的关键。本文将详细介绍如何针对`...
MySQL数据库优化SQL篇学习教案旨在帮助读者学习和掌握 MySQL 数据库优化的相关知识,涵盖了 SELECT 语句优化、执行计划、IN 和 EXISTS 语句、LIMIT 语句、RAND 函数、Order、Group、Distinct 和 Count 等方面的知识...
### MySQL InnoDB 查询优化实现分析 #### 一、目的与背景 本文旨在深入探讨 MySQL + InnoDB 存储引擎在实现查询优化时所采取的方法及其内部机制。通过具体实例和详细的技术解析,揭示 InnoDB 如何高效处理各种查询...
例如,使用count()函数对数据进行统计时,应避免对带有多行子查询的字段进行计数,因为这将极大地降低查询效率。另外,在查询语句中合理使用explain关键字可以帮助我们了解MySQL执行查询时所使用的索引和执行计划,...