【问题标题】:SEMI JOIN on AWS AthenaAWS Athena 上的半联接
【发布时间】:2019-07-07 06:15:25
【问题描述】:

我想知道是否有办法在 AWS Athena(托管 presto)上使用 SEMI JOIN。 我想尝试减少扫描的数据/提高查询性能。

在我的情况下,我知道联接的一侧恰好有一行,我想是否有办法指导引擎...

【问题讨论】:

    标签: sql amazon-web-services presto amazon-athena


    【解决方案1】:

    如果您发布一个您想要实现的目标以及它如何扫描太多的示例,将会很有帮助。您的问题非常广泛且难以回答。

    如果我对您的理解正确,我认为您可以通过执行以下操作来实现您所指的:

    SELECT *
    FROM table1
    WHERE something IN (SELECT something FROM table2 WHERE col1 = 'the thing' LIMIT 1)
    

    但它是否会减少扫描的数据量取决于您的具体情况。上面查询背后的想法是,它确保 Athena 仅扫描 table2 直到找到您要加入的特定行。如果您不走运,它仍然会扫描整个表,因为它找不到值,或者值在末尾。

    您也可以使用… WHERE EXISTS (SELECT …,但根据this Presto issue,它被转换为连接,可能意味着读取整个表——尽管LIMIT可能并非如此。

    【讨论】:

    猜你喜欢
    • 2020-09-12
    • 2017-12-20
    • 2019-05-27
    • 1970-01-01
    • 2021-07-28
    • 2018-01-28
    • 1970-01-01
    • 2018-09-06
    • 2022-06-21
    相关资源
    最近更新 更多