有人可以帮我理解下面两个之间的区别吗?
SELECT A.ACCT_NBR
FROM TABLE_1 A
WHERE A.ACCT_NBR IN (SELECT DISTINCT B.ACCT_NBR
FROM TABLE_2 B)
和
SELECT A.ACCT_NBR
FROM TABLE_1 A
WHERE A.ACCT_NBR IN (SELECT DISTINCT B.ACCT_NBR
FROM TABLE_2 B
WHERE B.ACCT_NBR = A.ACCT_NBR)
让我们假设数据类型不是问题。 我也可以做一个简单的内连接。但我需要了解有关此特定IN查询的详细信息。
通过SQLA生成的解释计划是彼此的副本,只有不同的假脱机大小(查询#1需要较小的假脱机大小)
示例数据
TABLE_1
ACCT_NBR | ACCT_ID
------------------
1111 | AAAA
2222 | BBBB
3333 | CCCC
4444 | DDDD
TABLE_2
PK | ACCT_NBR | ACCT_ID
-----------------------
1 | 1111 | AAAA
2 | 3333 | CCCC
3 | 1111 | AAAA
EXPECTED RESULT
ACCT_NBR
---------
1111
3333