我想在AWS Athena中使用Presto SQL语法连接两个有很多列的大表。我的代码很简单:
select
*
from TableA as A
left join TableB as B
on A.key_id = B.key_id
;
在加入之后,主键列(key_id
(被重复两次。这两个表都有100多列,连接需要很长时间。如何修复它,使key_id
列在最终结果中不会重复两次?
p.S.AWS Athena不支持except
命令,与Google BigQuery不同。
这是一个不错的特性,但不是标准SQL的一部分。EXCEPT
关键字是基于集合的操作(即过滤行(。
在Athena中,与标准SQL一样,您必须指定要包含的列。这样做的理由是它的维护成本较低,事实上,最佳实践是始终明确地声明您想要的列——永远不要把它留给";存在任何列";。这将有助于确保在表结构发生变化时,查询不会改变行为。
某些SQL语言具有这样的功能。我知道Oracle也有这种能力。但据我所知,雅典娜(/PrestoSQL/Trino(没有。