经过测试,最高效的一种:(1.5万条数据,大约0.125s)
delete from tableName le where le.rowid not in
( select MAX(a.rowid) from tableName a GROUP BY a.字段1, a.字段2,... )
上次后台导员工数据,耗费了大量的时间,甚至页面报错,分析原因,在于删除重复记录
的SQL语句太耗时间,经小李的指点,将原有sql进行了优化,优化结果:
---------------------------------------------------------------------------------------
可以将:
delete from netb_employ le where le.rowid != (select b.dataid
from (select a.num,
a.name,
MAX(a.ROWID) as dataid
from netb_employ a
GROUP BY a.num,
a.name) b
where le.num = b.num
and le.name = b.name) ;
耗时:大约25秒
---------------------------------------------------------------------------------------
优化为:
delete from netb_employ le where le.rowid not in
( select MAX(a.ROWID) from netb_employ a GROUP BY a.num, a.name ) ;
耗时:不到半秒
----------------------------------------------------------------------------------------
delete from tableName le where le.rowid not in
( select MAX(a.rowid) from tableName a GROUP BY a.字段1, a.字段2,... )
上次后台导员工数据,耗费了大量的时间,甚至页面报错,分析原因,在于删除重复记录
的SQL语句太耗时间,经小李的指点,将原有sql进行了优化,优化结果:
---------------------------------------------------------------------------------------
可以将:
delete from netb_employ le where le.rowid != (select b.dataid
from (select a.num,
a.name,
MAX(a.ROWID) as dataid
from netb_employ a
GROUP BY a.num,
a.name) b
where le.num = b.num
and le.name = b.name) ;
耗时:大约25秒
---------------------------------------------------------------------------------------
优化为:
delete from netb_employ le where le.rowid not in
( select MAX(a.ROWID) from netb_employ a GROUP BY a.num, a.name ) ;
耗时:不到半秒
----------------------------------------------------------------------------------------