我有2个表,表A和表B的SQL Server 2008R2查询拖延
表A中包含了惊人的3,000,000记录 表B中含有约10000条记录
我想删除TableA中符合特定参数的条目。此查询的小表qorked OK,但在VB.Net
delete FROM TableA WHERE (((TableA.ID) In (SELECT [TableB].ID FROM TableB)) AND ((TableA.EVDATE)='20170720'));
运行时在努力,看看发生了什么事情,我得到超时异常,我改变了这一个SELECT * FROM ... SSMS中和在5分钟没有结果,我停止了它...
为什么这个摊位,有没有更好的方式做到这一点?
我觉得这是更好的阅读:
delete FROM TableA WHERE TableA.EVDATE='20170720' and TableA.ID In
(SELECT [TableB].ID FROM TableB);
仅当**需要**时才使用括号。不必要的括号会使代码笨拙并且难以理解 –
在'TableA.ID'和'TableA.EVDATE'上创建索引将有助于查询的运行速度更快。 –
同时加入而不是使用'IN'可能会更快,您需要尝试。 –