首页
学习
活动
专区
工具
TVP
发布

Hive Count Distinct优化

未经优化的SQL语句转化后的MapReduce作业,它的运行效率可能大大低于用户的预期。本文我们就来分析一个简单语句的优化过程。...日常统计场景中,我们经常会对一段时期内的字段进行去重并统计数量,SQL语句类似于 SELECT COUNT( DISTINCT id ) FROM TABLE_NAME WHERE ...; 这条语句是从一个表的符合...由于引入了DISTINCT,因此在Map阶段无法利用Combine对输出结果去重,必须将id作为Key输出,在Reduce阶段再对来自于不同Map Task、相同Key的结果进行去重,计入最终统计值。...改进后的SQL语句如下: SELECT COUNT(*) FROM ( SELECT DISTINCT id FROM TABLE_NAME WHERE … ) t; 在实际运行时,我们发现...这一优化大幅地减少了第一个作业的Reduce输出IO以及第二个作业Map的输入数据量。最终在同样的运行环境下优化后的语句执行只需要原语句20%左右的时间。优化后的MapReduce作业流如下: ?

3.1K31

SQL优化终于干掉了“distinct

SQL优化之多表联合查询干掉“distinct”去重关键字 一、优化目的 二、优化之前的sql长这样 三、DISTINCT关键字的用法 四、谈:如何优化distinct的sql 五、distinct真的和...四、谈:如何优化distinct的sql 说到这里,先给大家放上一个链接: 1、(Mysql5.7官方手册中提及到的关于优化distinct的方法) https://dev.mysql.com/doc/...总结有以下比较重要的几点: 1、distinct与group by几乎等价; 2、distinct的相关优化与group by的查询优化方法是等价的; 五、distinct真的和group by等价吗?...那么我们优化distinct就变向的去优化group by了(我优化前的sql并未使用group by所以谈不上优化group by,只能说是把distinct的复杂sql改造成group by 的sql...七、总结 对于本人而言学到了: 1、distinct与group by几乎等价; 2、distinct的相关优化与group by的查询优化方法是等价的; 3、如果distinct的不能让sql最优化

2.4K31
您找到你想要的搜索结果了吗?
是的
没有找到

97- 优化select distinct owner from tbig

朋友发来一个SQL: select distinct owner from tbig where owner is not null; 已知tbig表很大, owner 的唯一值个数比较少, 问如何利用...所以说最好的优化还是设计出来的. 但是现在就是要优化这个看起来没有什么优化思路的SQL....经过提示说可以通过递归实现, 我就参考了PG数据库的一个类似优化写法, 生成了oracle的写法, 大概只需要100多个buffer 就能得到结果: with tmp (owner) as (...下面再把这个sql"简化"一下, 看看你能不能在上面的基础上, 用最优的方法得到下面的结果(owner 字段定义是可为null): select distinct owner from tbig;...补充: 这种sql, PG和oracle都要用到复杂的递归才写法能优化, 而mysql根本不需要任何改写, 就能达到PG和oracle复杂优化写法的效果.

19810

MYSQL 查询优化之路-之DISTINCT全表扫描

通过度娘,各种百度,是因为DISTINCT使用了全表扫描,现在特别记录下来。以背查验。...d.优化的目标是尽可能减少JOIN中Nested Loop的循环次数,以此保证:永远用小结果集驱动大结果集(Important!)!...如果还有第三个参与Join,则再通过前两个表的Join结果集作为循环基础数据,再一次通过循环查询条件到第三个表中查询数据,如此往复 2.两表JOIN优化: a.当无order by条件时...,会出现using temporary,所以此时需要使用STRAIGHT_JOIN明确a为驱动表,来达到使用a.col上index的优化目的;或者使用left join且Where条件中不含b的过滤条件.../inner join即可,根据explain优化; b.有order by a.col条件时,所有join必须为left join,且每个join字段都创建索引,同时where条件中只能有

3.1K42

SQL命令 DISTINCT

可以使用子查询实现DISTINCT、聚合函数和GROUP BY的预期组合。 字母大小写与DISTINCT优化 根据为字段定义的排序规则类型,将字符串值不同地分组在一起。...未使用优化. */ 可以使用管理门户优化包含DISTINCT子句的查询的查询性能。依次选择系统管理、配置、SQL和对象设置、SQL。...查看和编辑GROUP BY和DISTINCT查询必须生成原始值选项。(此优化也适用于GROUP BY子句。)。默认值为“否”。 此默认设置按字母值的大写排序规则对字母值进行分组。...此优化利用选定字段的索引。因此,只有在一个或多个选定字段存在索引时才有意义。它对存储在索引中的字段值进行排序;字母字符串以全部大写字母返回。...要确定当前设置,请调用$SYSTEM.SQL.CurrentSettings(),它显示打开的不同优化设置;默认值为1。

1.6K10

count(distinct) 与group by 浅析

地址:bitcarmanlee easy-algorithm-interview-and-practice 欢迎大家star,留言,一起学习进步 x在传统关系型数据库中,group by与count(distinct...count(distinct colA)就是将colA中所有出现过的不同值取出来,相信只要接触过数据库的同学都能明白什么意思。...count(distinct colA)的操作也可以用group by的方式完成,具体代码如下: select count(distinct colA) from table1; select count...distinct需要将colA中的所有内容都加载到内存中,大致可以理解为一个hash结构,key自然就是colA的所有值。因为是hash结构,那运算速度自然就快。...总结起来就是,count(distinct)吃内存,查询快;group by空间复杂度小,在时间复杂度允许的情况下,可以发挥他的空间复杂度优势。

43510

扫码

加入 开发者社群

领取 专属20元代金券

Get大咖技术交流圈

扫码加入开发者社群

相关产品

  • 云顾问

    云顾问

    腾讯云顾问从安全、可靠、服务限制几个维度帮助您优化云基础设施,以提升系统安全性以及服务可靠性。结合腾讯云多年服务客户沉淀的最佳实践,一键完成云资源的巡检操作,根据业务实际使用情况,在线提供资源优化建议,高效提升业务连续性。

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券