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 22 MySQL
mysql在项目中怎么选事务隔离级别
May 25 MySQL
MySQL完整性约束的定义与实例教程
May 30 MySQL
为什么代码规范要求SQL语句不要过多的join
Jun 23 MySQL
mysql如何配置白名单访问
Jun 30 MySQL
MySQL的Query Cache图文详解
Jul 01 MySQL
MySQL8.0的WITH查询详情
Aug 30 MySQL
MySQL中几种插入和批量语句实例详解
Sep 14 MySQL
MySQL和Oracle批量插入SQL的通用写法示例
Nov 17 MySQL
以MySQL5.7为例了解一下执行计划
Apr 13 MySQL
MySQL事务的ACID特性以及并发问题方案
Jul 15 MySQL
MySQL中LAG()函数和LEAD()函数的使用
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通过正则表达式记取数据来读取xml的方法
2015/03/09 PHP
PHP模板引擎Smarty中的保留变量用法分析
2016/04/11 PHP
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
jQuery获取URL请求参数的方法
2015/07/18 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
简单的分页代码js实现
2016/05/17 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
JavaScript设计模式之策略模式详解
2017/06/09 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
2018/08/30 Javascript
DatePickerDialog 自定义样式及使用全解
2019/07/09 Javascript
解决vue自定义指令导致的内存泄漏问题
2020/08/04 Javascript
[02:20]DOTA2亚洲邀请赛 IG战队出场宣传片
2015/02/07 DOTA
[48:47]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python字典排序实例详解
2015/05/20 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
在python中实现同行输入/接收多个数据的示例
2019/07/20 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
使用python模拟高斯分布例子
2019/12/09 Python
python 实现简单的FTP程序
2019/12/27 Python
html5中监听canvas内部元素点击事件的三种方法
2019/04/28 HTML / CSS
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
钳工实习自我鉴定
2013/09/19 职场文书
品质管理部岗位职责范文
2014/03/01 职场文书
私人会所最新创业计划书范文
2014/03/24 职场文书
消防安全承诺书
2014/05/22 职场文书
二手房购房协议书范本
2014/10/05 职场文书
投标承诺函范文
2015/01/21 职场文书
闪闪红星观后感
2015/06/08 职场文书
劳动保障事务所个人工作总结
2015/08/12 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
导游词之峨眉山
2019/12/16 职场文书
Python编程中Python与GIL互斥锁关系作用分析
2021/09/15 Python