我正在执行一个delete查询,它应该会立即运行
DELETE FROM
TableA
WHERE
TableA.SomeID IN (SELECT DISTINCT TableB.SomeID FROM TableB WHERE TableB.Something = Blah)如果我在IN语句中单独执行查询,那么它会立即运行。如果我用逗号分隔结果并将它们粘贴到外部查询中,那么该查询将立即运行。但是,当我将它们放在一起运行时,需要24秒。这就像是每行执行一次内部查询。我还尝试修改它以使用EXISTS语句,但速度也很慢。为此,我需要求助于临时表吗?
发布于 2013-06-14 10:00:43
嵌套子查询将会很慢。请尝试使用联接:
DELETE A
FROM TableA AS A
INNER JOIN TableB AS B
ON A.SomeID = B.SomeID
WHERE B.Something = Blah此外,请确保TableA.SomeID和TableB.SomeID都有索引,以最大限度地提高联接的性能。
发布于 2013-06-14 10:00:56
将其作为内连接执行应该比执行IN + DISTINCT快得多
DELETE A
FROM
TableA A
INNER JOIN TableB B ON B.SomeID = A.SomeID AND B.Something = Blahhttps://stackoverflow.com/questions/17099989
复制相似问题