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 05 MySQL
MySQL 慢查询日志深入理解
Apr 22 MySQL
MySQL库表名大小写的选择
Jun 05 MySQL
SQL实现LeetCode(197.上升温度)
Aug 07 MySQL
MySQL数据库索引的最左匹配原则
Nov 20 MySQL
Mysql中一千万条数据怎么快速查询
Dec 06 MySQL
MySQL 分区表中分区键为什么必须是主键的一部分
Mar 17 MySQL
MySQL 主从复制数据不一致的解决方法
Mar 18 MySQL
MySQL学习必备条件查询数据
Mar 25 MySQL
MySQL创建管理子分区
Apr 13 MySQL
MySQL导致索引失效的几种情况
Jun 25 MySQL
MySql按时,天,周,月进行数据统计
Aug 14 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 selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
PHP代码实现爬虫记录――超管用
2015/07/31 PHP
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
2015/10/22 PHP
php中curl和soap方式请求服务超时问题的解决
2018/06/11 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
jQuery弹性滑动导航菜单实现思路及代码
2013/05/02 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
2013/07/22 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
浅析Javascript ES6新增值比较函数Object.is
2016/08/24 Javascript
AngularJS通过$sce输出html的方法
2016/09/22 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
2017/02/13 Javascript
详解开源的JavaScript插件化框架MinimaJS
2017/10/26 Javascript
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
vue解决一个方法同时发送多个请求的问题
2018/09/25 Javascript
Vue v-model组件封装(类似弹窗组件)
2020/01/08 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
js实现弹幕墙效果
2020/12/10 Javascript
Python 解析XML文件
2009/04/15 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
python与caffe改变通道顺序的方法
2018/08/04 Python
Windows下实现将Pascal VOC转化为TFRecords
2020/02/17 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
Jmeter HTTPS接口测试证书导入过程图解
2020/07/22 Python
NFL欧洲商店(德国):NFL Europe Shop DE
2018/11/03 全球购物
Footshop罗马尼亚:最好的运动鞋选择
2019/09/10 全球购物
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
几道Java和数据库的面试题
2013/05/30 面试题
应用电子专业学生的自我评价
2013/10/16 职场文书
留学自荐信的技巧
2013/10/17 职场文书
历史专业个人求职信范文
2013/12/07 职场文书
环保志愿者活动方案
2014/08/14 职场文书
流动人口婚育证明范本
2014/09/26 职场文书
领导干部作风建设剖析材料
2014/10/11 职场文书
2015年12.4全国法制宣传日活动总结
2015/03/24 职场文书
2015年度物流工作总结
2015/04/30 职场文书