aa表和bak_temp_aa表中都有VERIFICATION_ID 这个列,要删除aa表中在bak_temp_aa表中不存在的列
常规的删除法:
delete aa where VERIFICATION_ID not in (select VERIFICATION_ID from bak_temp_aa )
前者有十几万行,后者有一万行,然后这个sql执行了十分钟竟然没有完成。
后来改写如下写法,也是同样好长时间没有跑完。
DELETE from aa where not exists (select 1 from bak_temp_aa bak where bak.VERIFICATION_ID = aa.VERIFICATION_ID )
reorg rebuild bak_temp_VERIFICATION_ID
在aa表的VERIFICATION_ID 列有个索引,bak表上没有,于是bak表上建立一个VERIFICATION_ID 的索引,再执行重建下这个索引:
reorg rebuild bak_temp_VERIFICATION_ID
于是乎,几秒钟内运行完上面的sql。
哎,以为十几万行的数据,临时维护的脚本就算性能差点慢又能慢到哪儿去,不给指条路就不知道走,对sybase 好无语。。。