A表(有上亿条数据),需要删除其中与B表(数据量不定)相同的数据(也可能没有相同数据,也可能都是),有索引,无主键,不能分表
以下语句太慢,应该怎么改?
DELETE A FROM A WHERE EXISTS (
SELECT 1 FROM B WHERE A.insert_time = B.insert_time
)
A表(有上亿条数据),需要删除其中与B表(数据量不定)相同的数据(也可能没有相同数据,也可能都是),有索引,无主键,不能分表
以下语句太慢,应该怎么改?
DELETE A FROM A WHERE EXISTS (
SELECT 1 FROM B WHERE A.insert_time = B.insert_time
)
第一步先查出要删除数据的rowid,然后根据rowid删除,这是最快的办法了。但是你这里a表和b表有相同的插入时间?这是什么逻辑关系?即使两个表有主外健关系也不可能插入时间完全相同啊