为此使用 Sybase ASE 15 - 我有大约大量的行(最多 10 百万)要定期从表中删除,但我想将最新添加的数据选择保留到表中,以便规则直接在表上使用截断。
delete from master_table where...
使用上面的删除非常慢,所以我的策略是将要保留的数据移动到临时表中,截断主表并将数据再次从临时表中移回,即
1) select * into #temp_table from master_table where date_updated > dateadd(mi, -15, getdate()) and node_type != 'X'
2) truncate table master_table
3) insert into master_table select * from #temp_table
这几乎已经足够了 - 1 和 2 有很好的性能,但是插入到主控中太慢了。
所以我的问题真的归结为是否有一种快速的方法来做:
delete from master_table where...
insert into xyz select * from...
或者我对替代方法持开放态度!