使用首字母分区键连接两个表的这两个 Hive 查询是否存在性能差异?

发布于 2025-01-17 07:17:30 字数 348 浏览 4 评论 0原文

假设表 A 和 B 都将 mid_key 作为分区键。

方法一

SELECT *
FROM A
    JOIN B ON A .mid_key = B.mid_key
    AND A .mid = B.mid

方法二

SELECT *
FROM A
    JOIN B ON AND A .mid = B.mid

mid_key来自于SUBSTR(mid, 1, 1) AS mid_key,大约有五十个分区
表 A 和 B 大约有 6 亿行
第一个查询会更快吗?

Suppose both table A and B have mid_key as their partition key.

Method 1

SELECT *
FROM A
    JOIN B ON A .mid_key = B.mid_key
    AND A .mid = B.mid

Method 2

SELECT *
FROM A
    JOIN B ON AND A .mid = B.mid

mid_key comes from SUBSTR(mid, 1, 1) AS mid_key, it has about fifty partitions
table A and B has about 600 million rows
Will the 1st query be faster?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情痴 2025-01-24 07:17:30

第一个 sql 会执行得更好,因为 mid_key 上有一个分区键。

如果 mid_key 是分区键,那么它将在连接两个表时使用,并且 HDFS 扫描将仅选择两个表中都存在的分区并忽略其他分区。因此,由于 Hive 将分区键上的数据划分到单独的文件夹中,因此 I/O 更少,性能更快。

First sql will perform better because you have a partition key on mid_key.

If mid_key is the partition key then it will be used while joining two tables and HDFS scan will choose only those partitions that exist in both tables and ignore others. So, lot less I/O and faster performance because hive divides data on partition key into separate folder.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文