`
文艺的程序猿
  • 浏览: 102489 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Mysql中count(*),DISTINCT的使用方法和效率研究

阅读更多

在处理一个大数据量数据库的时候
突然发现mysql对于count(*)的不同处理会造成不同的结果

比如执行
SELECT count(*) FROM tablename
即使对于千万级别的数据mysql也能非常迅速的返回结果
而对于
SELECT count(*) FROM tablename WHERE.....
mysql的查询时间开始攀升

仔细查阅累下手册,发现当没有WHERE语句对于整个mysql的表进行count运算的时候
MyISAM类型的表中保存有总的行数,而当添加有WHERE限定语句的时候Mysql需要对整个表进行检索
从而得出count的数值

突然又想起来看到的不少新兴的php程序对于count的处理并没有很好的意识到这点
记录下

顺便提下mysql的DISTINCT的关键字有很多你想不到的用处
1.在count 不重复的记录的时候能用到
比如SELECT COUNT( DISTINCT id ) FROM tablename;
就是计算talbebname表中id不同的记录有多少条

2,在需要返回记录不同的id的具体值的时候可以用
比如SELECT DISTINCT id FROM tablename;
返回talbebname表中不同的id的具体的值

3.上面的情况2对于需要返回mysql表中2列以上的结果时会有歧义
比如SELECT DISTINCT id, type FROM tablename;
实际上返回的是 id与type同时不相同的结果,也就是DISTINCT同时作用了两个字段,必须得id与tyoe都相同的才被排除了,与我们期望的结果不一样

4.这时候可以考虑使用group_concat函数来进行排除,不过这个mysql函数是在mysql4.1以上才支持的

5.其实还有另外一种解决方式,就是使用
SELECT id, type, count(DISTINCT id) FROM tablename
虽然这样的返回结果多了一列无用的count数据(或许你就需要这个我说的无用数据)
返回的结果是 只有id不同的所有结果和上面的4类型可以互补使用,就是看你需要什么样的数据了

分享到:
评论

相关推荐

    分析MySQL中优化distinct的技巧

    MySQL的执行计划显示,原始SQL语句`SELECT COUNT(DISTINCT nick) FROM user_access`使用了`ind_user_access`索引进行全扫描,这意味着数据库需要遍历整个索引来获取不重复的`nick`值。这显然是低效的,因为即使使用...

    MySQL中distinct和count(*)的使用方法比较

    关于 `DISTINCT` 的效率,虽然在某些情况下 `DISTINCT` 查询可能转化为 `GROUP BY` 形式以提高效率,但其实际性能取决于数据分布、索引使用和其他因素。通常,如果有针对查询列的合适索引,`DISTINCT` 的性能会更好...

    【DISTINCT】优化之MySQL官方文档翻译

    当`DISTINCT`与`LIMIT row_count`结合使用时,MySQL会尝试尽快返回满足条件的`row_count`条唯一记录。这意味着一旦MySQL找到了所需的`row_count`条记录,它就会停止进一步的查询处理,从而节省计算资源。 此外,...

    小度写范文【SQL中distinct的用法】mysql中distinct用法模板.pdf

    在MySQL中,`DISTINCT`的使用方式非常灵活,可以从单个列到多个列进行操作,也可以与聚合函数如`COUNT()`结合使用。以下是关于`DISTINCT`在SQL中的具体用法和一些注意事项。 1. **单列去重** 当我们只对单一列应用...

    mysql中distinct用法【SQL中distinct的用法】.docx

    使用 DISTINCT 关键字可以与 COUNT 函数结合使用,以统计表中唯一值的数量。例如: ``` SELECT COUNT(DISTINCT name) FROM A; ``` 这条语句将返回表 A 中 name 列的所有唯一值的数量。注意,这条语句只能统计单个...

    国开MySQL数据库应用形考任务1~4.doc

    * COUNT() 函数的使用 * SUM() 函数的使用 实验 2-1:单表查询 * 字段查询的方法 * 条件查询的方法 实验 2-2:多条件查询 * 多条件查询的方法 * 条件查询的方法 实验 2-3:DISTINCT * DISTINCT 语句的使用 * ...

    小度写范文【SQL中distinct的用法】mysql中distinct用法模板.docx

    在MySQL中,`DISTINCT`的使用方式和功能与其他SQL数据库系统(如SQL Server、Access等)大体相同,但有一些细微的差别。以下是对`DISTINCT`用法的详细解释: 1. **单列去重**: 当我们需要从一个表中获取唯一的某...

    用Distinct在MySQL中查询多条不重复记录值,绝对的物有所值

    我们了解到`DISTINCT`关键字在MySQL中的运用远不止去除简单重复值这么简单,它与`GROUP BY`、`COUNT`、`GROUP_CONCAT`等其他SQL功能结合,能够应对更为复杂的查询需求,极大地提升了数据处理的灵活性和效率。...

    使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT

    如果我们要统计每个不同的email和passwords组合的数量,我们需要使用COUNT(DISTINCT email, passwords)。这样,即使某个email对应多个passwords,也只会被计算一次。 如果我们错误地使用了GROUP BY email, ...

    mySQL培训手册

    - **最低要求:** 熟悉MySQL的基本命令和SQL语句。 - **一般要求:** 掌握MySQL的常用操作及标准SQL语言,并了解数据库编程的基础知识如存储过程、函数等。 - **高级要求:** 深入理解MySQL及其标准SQL语言,熟练...

    MySQL中使用去重distinct方法的示例详解

    2.只能在SELECT 语句中使用,不能在 INSERT, DELETE, UPDATE 中使用; 3.DISTINCT 表示对后面的所有参数的拼接取 不重复的记录,即查出的参数拼接每行记录都是唯一的 4.不能与all同时使用,默认情况下,查询时返回的...

    MySQL数据库优化SQL篇PPT课件.pptx

    Order by、Group by、Distinct和Count是MySQL数据库中常用的语句。Order by语句用于排序记录,Group by语句用于分组记录,Distinct语句用于去除重复记录,Count语句用于统计记录的数量。这些语句的使用可以提高...

    MySQL中Distinct和Group By语句的基本使用教程

    在MySQL数据库中,`DISTINCT`和`GROUP BY`是两个非常重要的查询语句,它们在处理数据去重和分组方面发挥着关键作用。本文将详细介绍这两个语句的使用方法。 首先,`DISTINCT`关键字是用来去除查询结果中重复记录的...

    MySQL中聚合函数count的使用和性能优化技巧

    本文将详细讲解COUNT()函数的使用方式和性能优化技巧,以MySQL 5.7.12-log版本为例,运行环境为Windows 10。 1. COUNT()的基本使用 - COUNT(column_name): 此用法统计指定列中非NULL值的数量。例如,`COUNT...

    国开MySQL数据库应用形考任务4.docx

    MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了强大的数据存储和管理功能。在MySQL中,数据库和表是数据组织的基本单位。以下是对标题和描述中涉及的知识点的详细解释: 1. **创建数据库**:使用`CREATE...

    MySQL SQL优化 .docx

    2. **合理使用GROUP BY和DISTINCT:** 如果可能,尽量减少GROUP BY和DISTINCT的使用,或者尝试提前过滤数据,减少参与这些操作的数据量。 3. **避免复杂的子查询:** 复杂的子查询通常会增加CPU的计算负担。考虑使用...

Global site tag (gtag.js) - Google Analytics