1

我想更好地了解如何在 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
4

1 回答 1

1

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

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

于 2013-10-17T21:32:40.133 回答