重写删除超过30k行的T-SQL查询

new*_*guy 1 t-sql sql-server

如果我想删除TSQL中表中多达30k行,我就无法使用

delete from myTable where Id in (1,2,3,...,30k)

因为根据这篇文章http://support.microsoft.com/kb/288095,IN子句中的ID数量太大了

但是如何使用临时表和表连接重写我的查询以删除行?

编辑:ID不按顺序排列.它们被某些逻辑选中,因此它们只是myTable中的一些任意ID.

Rob*_*ing 7

SELECT DISTINCT ID
INTO #tmpIDs
FROM tbl_IDTable
WHERE ID BETWEEN 1 AND 30000

DELETE MYTABLE 
FROM MYTABLE t
INNER JOIN #tmpIDs d ON d.id = t.id

DROP TABLE #tmpIDs
Run Code Online (Sandbox Code Playgroud)

*如果它是另一个查询内部的问题*****

 DELETE MYTABLE 
    FROM MYTABLE t
    INNER JOIN (SELECT DISTINCT ID
                FROM MYTABLE
                WHERE ID BETWEEN 1 AND 30000) d d.id = t.id
Run Code Online (Sandbox Code Playgroud)