【问题标题】:MySQL and Hive query ImplementationMySQL 和 Hive 查询实现
【发布时间】:2013-10-26 14:07:33
【问题描述】:

我想更好地了解如何在 hive 或 MySQL 中实现查询以优化它们以节省运行时间。

假设我在键“name”的两个表上执行 INNER JON 操作,我只想要 name 等于“random”的行

SELECT * from tbl1 JOIN tbl2 on tbl2.name = tbl1.name where tbl1.name = 'random';

现在在实现中,事件的顺序是什么: 1.是否在 tbl1 上过滤 name="random" 后跟 JOIN 操作? 2. 是先加入表然后根据name="random"过滤吗?

我认为选项 1 更好,因为我们将处理更少的 JOIN 数据并且它应该更快。专家有什么想法吗?

更新1:

如果我将查询修改为这样,答案是否相同:

(SELECT * FROM tbl1 where tbl1.name='random) tbl1_1 JOIN tbl2 on tbl2.name=tbl1_1.name

【问题讨论】:

    标签: mysql join hadoop hive where


    【解决方案1】:

    是的,你是对的。将首先在 tbl1 上过滤 name="random",然后执行 JOIN 操作。这样可以防止 join 加入不必要的记录

    可以使用EXPLAIN关键字来获取执行计划

    【讨论】:

    • 如果我将查询修改为:'(SELECT * FROM tbl1 where tbl1.name='random) tbl1_1 JOIN tbl2 on tbl2.name=tbl1_1.name'
    • 谢谢!你的意思是两个查询(见我的更新)是等价的。我会再等一段时间……然后接受你的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 2023-03-09
    • 2018-01-06
    • 1970-01-01
    相关资源
    最近更新 更多