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


Posted in MySQL onMay 26, 2021

首先对于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类型可以互补使用,就是看你需要什么样的数据了。
DISTINCT的效率:

SELECT id, type, count(DISTINCT id) FROM  tablename;虽然这样的返回结果多了一列无用的count数据(或许你就需要这个我说的无用数据),SELECT id, type from tablename group by id;这样貌似也可以,用distinct的时候,如果它有索引,mysql会把它转成group by的方式执行。

 MySQL数据库对于COUNT(*)的不同处理会造成不同的结果,比如,

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

网上查资料得知:当没有WHERE语句对于整个mysql的表进行count运算的时候,MyISAM类型的表中保存有总的行数,而当添加有WHERE限定语句的时候Mysql需要对整个表进行检索,从而得出count的数值,因此加上where条件的查询速度就会很慢了。
以上关于MySQL数据库的distinct以及count(*)的使用就介绍到这里了,希望本次的介绍能够带给您一些收获。

MySQL 相关文章推荐
详解Mysql 函数调用优化
Apr 07 MySQL
MySQL 使用索引扫描进行排序
Jun 20 MySQL
MySQL如何使用使用Xtrabackup进行备份和恢复
Jun 21 MySQL
MySQL数据库超时设置配置的方法实例
Oct 15 MySQL
一条 SQL 语句执行过程
Mar 17 MySQL
mysql使用instr达到in(字符串)的效果
Apr 03 MySQL
Mysql 8.x 创建用户以及授予权限的操作记录
Apr 18 MySQL
详解Mysq MVCC多版本的并发控制
Apr 29 MySQL
MySQL数据库中的锁、解锁以及删除事务
May 06 MySQL
sql注入报错之注入原理实例解析
Jun 10 MySQL
MySql如何将查询的出来的字段进行转换
Jun 14 MySQL
MySQL数据库表约束讲解
Jun 21 MySQL
MySQL中出现乱码问题的终极解决宝典
如何设计高效合理的MySQL查询语句
May 26 #MySQL
虚拟机linux端mysql数据库无法远程访问的解决办法
May 26 #MySQL
正确使用MySQL INSERT INTO语句
May 26 #MySQL
正确使用MySQL update语句
May 26 #MySQL
详解MySQL集群搭建
MySQL中VARCHAR与CHAR格式数据的区别
May 26 #MySQL
You might like
一个php作的文本留言本的例子(一)
2006/10/09 PHP
Smarty安装配置方法
2008/04/10 PHP
测试php连接mysql是否成功的代码分享
2014/01/24 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
2009/03/21 Javascript
Jquery 选中表格一列并对表格排序实现原理
2012/12/15 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
JSP基于Bootstrap分页显示实例解析
2016/06/12 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
2017/01/13 Javascript
js实现楼层导航功能
2017/02/23 Javascript
vuejs父子组件之间数据交互详解
2017/08/09 Javascript
jquery实现左右轮播切换效果
2018/01/01 jQuery
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
pageGroup.js实现分页功能
2019/07/27 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
JavaScript实现世界各地时间显示
2020/09/07 Javascript
JavaScript枚举选择jquery插件代码实例
2020/11/17 jQuery
[25:45]2018DOTA2亚洲邀请赛4.5SOLO赛 Sylar vs Paparazi
2018/04/06 DOTA
[55:26]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第一场 2月23日
2021/03/11 DOTA
Python中for循环详解
2014/01/17 Python
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
Linux 发邮件磁盘空间监控(python)
2016/04/23 Python
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
python装饰器深入学习
2018/04/06 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
Python 中@property的用法详解
2020/01/15 Python
大学生收银员求职信分享
2014/01/02 职场文书
硕士研究生求职自荐信范文
2014/03/11 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
镇创先争优活动总结
2014/08/28 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
《海上日出》教学反思
2016/02/23 职场文书
2019年七夕情人节浪漫祝福语大全!
2019/08/08 职场文书
Win11更新失败并提示0xc1900101
2022/04/19 数码科技