Wil*_*iam 1 sql sql-server-2008
最初的陈述是:
Select
A.a,
B.b
FROM
A,
B
WHERE
A.c = B.C
Run Code Online (Sandbox Code Playgroud)
我添加了这个并获得了200多万行:
Select
A.a,
B.b,
C.d
FROM
A,
B,
C
WHERE
A.c = B.C
AND
C.c = A.c
Run Code Online (Sandbox Code Playgroud)
CI正在尝试添加的表只有55,000行,而其他两个表要大得多.
你得到的是交叉产品,而不是真正的加入.这非常昂贵.
我建议将其重写为:
select a.a, b.b, c.d
from a
join b on a.c = b.c
join c on c.c = a.c
Run Code Online (Sandbox Code Playgroud)
它会明显更快,并可能为您提供所需的结果.
听起来你不小心产生了一些笛卡尔积.似乎某些表有多个具有相同C值的行,并且您正在获得重复项.看看每个表中C的唯一性.
我使用更清晰,更明确的新样式连接语法重写它:
SELECT A.a, B.b, C.d
FROM A
JOIN B on A.c = B.c
JOIN C on A.c = C.c
Run Code Online (Sandbox Code Playgroud)