Presto【实践 01】Presto查询性能优化(数据存储+SQL优化+无缝替换Hive表+注意事项(1)

SELECT field_name_1, field_name_2 FROM table_name WHERE partition_time=‘xxx’;
– NORMAL
SELECT field_name_1, field_name_2 FROM table_name WHERE normal_time=‘xxx’;


3. GROUP BY 语句优化:合理安排 GROUP BY 语句中字段顺序对性能有一定提升。将 GROUP BY 语句中字段按照每个字段 DISTINCT 数据多少进行`降序排列`。



– GOOD
SELECT field_name_1, field_name_2 FROM table_name GROUP BY id, type;
– NOT GOOD
SELECT field_name_1, field_name_2 FROM table_name GROUP BY type, id;


4. ORDER BY 时使用 LIMIT :ORDER BY 需要扫描数据到单个 worker 节点进行排序,导致单个worker 需要大量内存。如果是查询 Top N 或者 Bottom N,使用 LIMIT 可减少排序计算和内存压力。



– GOOD
SELECT field_name_1, field_name_2 FROM table_name ORDER BY sort_field_name LIMIT 100;
– NOT GOOD
SELECT field_name_1, field_name_2 FROM table_name ORDER BY sort_field_name;


5. 使用近似聚合函数:Presto 有一些近似聚合函数,对于允许有少量误差的查询场景,使用这些函数对查询性能有大幅提升。比如使用 APPROX\_DISTINCT(x) 函数比 COUNT(DISTINCT x) 有大概 2.3% 的误差。



SELECT APPROX_DISTINCT(field_name) FROM table_name;


6. 用 REGEXP\_LIKE 代替多个 LIKE 语句:Presto 查询优化器没有对多个 LIKE 语句进行优化,使用 REGEXP\_LIKE 对性能有较大提升。



– GOOD
SELECT field_name_1, field_name_2 FROM table_name
WHERE REGEXP_LIKE(field_name, ‘GET|POST|PUT|DELETE

  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值