问题是这样的:现有两张表,两表中有一字段相同,其中一张表的记录比另外一张表记录多,现在需要根据相同的字段进行筛选,删除掉记录较多的那张表中的记录,我写的SQL如下:
delete from a where field not in (select a.field from a, b where a.field=b.field)
这条SQL可以执行,但是速度太慢了,在记录为3万6千多条和7千多条的两张表中执行,执行了15分钟,都还没有到一半,请SQL高手指点一下。
...全文
2204打赏收藏
如何能快速的删除表中的记录?
问题是这样的:现有两张表,两表中有一字段相同,其中一张表的记录比另外一张表记录多,现在需要根据相同的字段进行筛选,删除掉记录较多的那张表中的记录,我写的SQL如下: delete from a where field not in (select a.field from a, b where a.field=b.field) 这条SQL可以执行,但是速度太慢了,在记录为3万6千多条和7千多条的两张表中执行,执行了15分钟,都还没有到一半,请SQL高手指点一下。
这样select到新表有什么用,再用新表对照着去删除旧表?这样分两步做还是会很慢的。
如果没有理解错的话,你是要将a.field<>b.field的记录删除,
剩下a.field=b.field的记录,用
SELECT A.* INTO NEWTABLE from a, b where a.field=b.field
即可到达目的,用NEWTABLE覆盖A即可。