sql - 在 Redshift 中执行 WHERE IN 或 INNER JOIN 更快吗

标签 sql join amazon-redshift

我在 redshift 中有 2 个表:

表1

|   ids |
|------:|
|     1 |
|     2 |
|     6 |
|     9 |
|    12 |

表2

|   id |    value |
|-----:|---------:|
|    1 | 0.134435 |
|    2 | 0.767417 |
|    3 | 0.779567 |
|    4 | 0.726051 |
|    5 | 0.405138 |
|    6 | 0.775206 |
|    7 | 0.699945 |
|    8 | 0.499433 |
|   10 | 0.457386 |
|    9 | 0.227511 |
|   10 | 0.369292 |
|   11 | 0.653735 |
|   12 | 0.537251 |
|    2 | 0.953539 |
|   13 | 0.377625 |
|   14 | 0.973905 |
|    4 | 0.104643 |
|    1 | 0.450627 |

我基本上想获取 table2 中的行,其中 id 位于 table1 中,我有两种可能性:

SELECT *
FROM table2
WHERE id IN (SELECT ids FROM table1)

SELECT t2.id, t2.value
FROM table2 t2
INNER JOIN table1 t1
ON t2.id = t1.ids

我想知道它们之间是否有任何性能差异。

(我知道我可以在这个例子中进行测试来找出答案,但我想知道是否有一个总是更快)

编辑:table1.ids是一个唯一的列

最佳答案

这两个查询执行不同的操作。

如果idtable1中重复,JOIN可以增加行数。

IN 永远不会重复行。

如果 id 可以重复,您应该使用能满足您需求的版本。如果id保证是唯一的,那么两者在功能上是等价的。

根据我的经验,JOIN 通常至少与 IN 一样快。当然,您可以测试您的数据,但这是一个起点。

关于sql - 在 Redshift 中执行 WHERE IN 或 INNER JOIN 更快吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63341257/

相关文章:

php - 删除记录返回 SQLSTATE[42000] 错误

.net - 如何在.NET中使用SQL用户定义的函数?

mysql - 连接两个表并按类型创建虚拟列

mysql - 通过在彼此内嵌套子查询来解决 MySQL 中的 61 个表 JOIN 限制

amazon-redshift - 检索 Redshift 错误消息

amazon-redshift - 如何在 Redshift psql 查询中使用 now 函数?

mysql - 选择具有相同 id 的下一条记录

php - 如何使用 simple_html_dom.php 将数组插入 MySQL 数据库?

从多个表返回所有列的函数 (PostgreSQL)

postgresql - AWS 卸载错误 : 'The bucket you are attempting to access must be addressed using the specified endpoint.'