对单个字段的结果进行去重,用distinct执行效率快,还是用group by快

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对单个字段的结果进行去重,用distinct执行效率快,还是用group by快相关的知识,希望对你有一定的参考价值。

那要看字段有多大。
distinct方式就是两两对比,需要遍历整个表。
group by分组类似先建立索引再查索引,所以两者对比,小表destinct快,不用建索引。大表group by快。一般来说小表就算建索引,也不会慢到哪去,但是如果是TB级大表,遍历简直就是灾难。
所以很多ORACLE项目都禁止使用distinct语句,全部要求替换成group by。
参考技术A distinct 和group by都需要排序,一样的结果集从执行计划的成本代价来看差距不大,但group by 还涉及到统计,所以应该需要准备工作。所以单纯从等价结果来说,选择distinct比较效率一些。本回答被提问者和网友采纳

mysql数据库之去重

利用 distinct

:对需要处理的字段进行去重

select  distinct 字段名 from 表名

技术图片

去重以后

技术图片

利用group by

select * from 表名 group by 字段名

技术图片

利用having

select * from 表名 group by 字段名 having 字段名=要求

 

技术图片

 

where和having的区别

1.having用于group by 之后

2.where是用于表中筛选查询,having用于在where和group结果中查询

3.having可以使用聚合函数,而where不能

4.having执行顺序位于where之后

以上是关于对单个字段的结果进行去重,用distinct执行效率快,还是用group by快的主要内容,如果未能解决你的问题,请参考以下文章

distinct去重多个字段

SQL多个字段如何去重

oracle中查询多个字段并根据部分字段进行分组去重

mysql中去重 distinct 用法

mysql中去重 用group by优化distinct 用法

当进行数据的去重查询时,使用group by效率更高。