PrestoSQL语法及优化



1、PrestoSQL概述


2020年12月27日,PrestoSQL为了更好的与Facebook的Presto进行区分而改名为Trino。PrestoSQL/Trino是一种分布式SQL查询引擎,旨在查询分布在一个或多个异构数据源上的大型数据集

PrestoSQL官网:https://trino.io

PrestoSQL官方文档:https://trino.io/docs/current/overview.html

更多关于Presto的介绍详见文章:传送门

PrestoSQL/Trino是一个符合ANSI SQL的查询引擎。这种标准合规性允许PrestoSQL用户将他们喜欢的数据工具(包括BI和ETL工具)与任何底层数据源集成

PrestoSQL验证接收到的SQL语句并将其转换为对连接的数据源进行必要的操作。本文主要介绍PrestoSQL支持的SQL数据类型和SQL支持的其他一般特征,以及PrestoSQL的优化

2、PrestoSQL语法

2.1、PrestoSQL数据类型


PrestoSQL数据类型详见官网:https://trino.io/docs/current/language/types.html#

2.2、关键字和标识符


PrestoSQL关键字和标识符详见官网:https://trino.io/docs/current/language/reserved.html

2.3、PrestoSQL注释


PrestoSQL注释详见官网:https://trino.io/docs/current/language/comments.html#

2.4、PrestoSQL语法


PrestoSQL语法详见官网:https://trino.io/docs/current/sql.html#

2.5、PrestoSQL例程


PrestoSQL例程详见官网:https://trino.io/docs/current/routines.html#

2.6、PrestoSQL使用常见问题


1)字段名引用

避免字段名与关键字冲突:MySQL对于关键字冲突的字段名加反引号,Presto对与关键字冲突的字段名加双引号。当然,如果字段名不与关键字冲突,则可以不加双引号

2)时间函数

对于timestamp,需要进行比较的时候,需要添加timestamp 关键字,而MySQL中对timestamp可以直接进行比较

-- MySQL写法
SELECT t FROM a WHERE t > '2023-12-01 00:00:00'; 
-- Presto写法
SELECT t FROM a WHERE t > timestamp '2023-12-01 00:00:00';

3)MD5函数的使用

Presto中MD5函数传入的是binary类型,返回的也是binary类型,对字符串进行MD5操作时,需要转换

SELECT to_hex(md5(to_utf8('1314')));

4)INSERT OVERWRITE语法

Presto中不支持insert overwrite语法,只能先delete,然后insert into

3、PrestoSQL优化

3.1、存储优化


1)合理设置分区

与Hive类似,Presto会根据元数据信息读取分区数据,合理地设置分区能减少Presto数据读取量,提升查询性能

2)使用ORC格式存储

  • 23
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值