oracle查询时用distinct的执行效率和用group by的效率谁更高一些?

如题所述

distinct 和group by都需要排序,一样的结果集从执行计划的成本代价来看差距不大,但group by 还涉及到统计,所以应该需要准备工作。所以单纯从等价结果来说,选择distinct比较效率一些。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-03-31
小数据量distinct 稍稍快点
稍大的数据量group by 稍稍快点
这2个东西用在不同的需求场合,没有明确的快和慢,和你的表结构还有sql也有关系的
第2个回答  2013-03-30
group by 高一些,。如果你要过滤重复的话,建议使用子查询,distinct效率很低的。
第3个回答  推荐于2018-03-19
oracle研发中,禁止使用distinct这个关键字。有distinct的地方,均使用group by替换。本回答被网友采纳
第4个回答  2013-03-31
数据多 distinct快 少就是group by。感觉是这样的

对单个字段的结果进行去重,用distinct执行效率快,还是用group by快
group by分组类似先建立索引再查索引,所以两者对比,小表destinct快,不用建索引。大表group by快。一般来说小表就算建索引,也不会慢到哪去,但是如果是TB级大表,遍历简直就是灾难。所以很多ORACLE项目都禁止使用distinct语句,全部要求替换成group by。

SQL去重是用DISTINCT好,还是GROUP BY好?
总结而言,是否使用DISTINCT或GROUP BY进行去重,应根据实际数据的重复量来判断。在数据重复量较高的场景下,使用DISTINCT通常更高效;而在数据重复量较低的情况下,则使用DISTINCT效率更高。这有助于在优化SQL查询效率时做出合适的选择。通过实验对比,我们对SQL去重操作中DISTINCT和GROUP BY的选择和应用有了...

SQL语句中的 Distinct 和 Group by 有什么不同,用那个好?
distinct能实现的功能,group by都可以实现,且group by 更为功能强大

MySQL中distinct和group by性能比较
进一步分析,GROUP BY利用了并行处理的优势,将数据分组并进行聚合,而DISTINCT在默认情况下执行的是全局唯一reduce任务,限制了并行度。因此,当数据重复较少时,DISTINCT的效率会下降,而GROUP BY则更为适用。总结来说,对于重复量高的数据,DISTINCT可能提供更好的查询效率,而重复量低时,GROUP BY更为推...

distinct和group by的功能、使用和底层原理
在Mysql8.0及以上版本,即使无索引,GROUP BY和DISTINCT的执行效率基本相当,但GROUP BY语义更明确,尤其在大规模数据去重时,推荐优先使用GROUP BY。GROUP BY的使用场景包括但不限于:分组聚合统计,例如计算每个城市的平均年龄或人口数量,以及进行数据去重。其底层原理涉及到内存排序和临时表操作,当条件...

oracle中distinct和group by的区别
这两者本质上应该没有可比性,distinct 取出唯一列,group by 是分组,但有时候在优化的时候,在没有聚合函数的时候,他们查出来的结果也一样。一、group by英 [ɡru:p bai] 美 [ɡrup baɪ][计][WIN]分组依据

sqlserver 用distinct和group by哪个效率高
sql server数据库进行查询语句时,distinct和group by的效率比较,group by的效率更高一点,因为group by通过group进行排序而distinct是全表排序资源消耗更多。所以,group by效率更高。

mysql的group by和distinct的区别
DISTINCT操作只需要找出所有不同的值就可以了。而GROUP BY操作还要为其他聚集函数进行准备工作。从这一点上将,GROUP BY操作做的工作应该比DISTINCT所做的工作要多一些。除此之外,基本上看不到DISTINCT和GROUP BY(没有聚集函数的情况)有什么区别,而且从执行效率上也看不到明显的差异;

distinct 和 group by 在查询多列数据去重复时的区别在哪
distinct只是将重复的行从结果中出去;group by是按指定的列分组,一般这时在select中会用到聚合函数。distinct是把不同的记录显示出来。group by是在查询时先把纪录按照类别分出来再查询。group by 必须在查询结果中包含一个聚集函数,而distinct不用。

Oracle中Distinct与Order by的问题
不能使用distinct会出现重复的user_id。如果按 c209zhang朋友说的那样只能按下面语句,重复user_id全部排除掉才行。select user_id,product_price from 表1 where user_id in (select user_id from 表1 having count(user_id)=1 group by user_id)order by product_price;...

相似回答