[英]SEMI JOIN on AWS Athena
我想知道是否有一种方法可以在AWS Athena(托管的presto)上使用SEMI JOIN。 我想尝试减少扫描的数据/提高查询性能。
就我而言,我知道联接的一侧恰好有一行,并且我想是否有一种方法可以指示引擎有关此信息……
如果您发布了一个示例,说明您想实现什么以及如何进行过多扫描,这将很有帮助。 您的问题很广泛,很难回答。
如果我对您的理解正确,我认为您可以通过执行以下操作来达到您所指的目的:
SELECT *
FROM table1
WHERE something IN (SELECT something FROM table2 WHERE col1 = 'the thing' LIMIT 1)
但是,是否要减少扫描的数据量取决于您的具体情况。 上面查询背后的想法是,确保Athena仅扫描table2
直到找到您要加入的特定行。如果不走运,它仍将扫描整个表,因为它找不到值,或者该值在末尾。
您也可以使用… WHERE EXISTS (SELECT …
,但是根据此Presto问题,它被转换为联接,并可能意味着读取了整个表-尽管使用LIMIT
可能不是这种情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.