【发布时间】:2020-11-30 02:53:39
【问题描述】:
我有 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 是一个独特的列
【问题讨论】:
-
我遇到了这个问题。花了 3 天时间排除故障。从外观上看,'IN' 和 'EXISTS' 在 RedShift 中没有得到很好的优化。 “内部连接”执行得更快。我正在使用 TB 大小的表格。我会选择内部连接。
标签: sql join amazon-redshift