对单个字段的结果进行去重,用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快的主要内容,如果未能解决你的问题,请参考以下文章