我有两个非常庞大的SQLite
个表(里面有几何数百万行)。第一个是不改变(记录不更新等)。第二个更新(旧记录可以更新/删除,可以添加新记录)。
我不时需要使用第二个表更新第一个表。因为它是如此大量的数据,我必须检测第二个表中所做的更改并将它们应用到第一个表中。我也不能在RAM中这样做,因为表包含几何形状,它们可能非常重。
实现这一目标的可能方法是什么?
答案 0 :(得分:1)
简单解决方案:删除第一个表,然后使用表达式
drop table table1;
create table table1 as select * from table2;
更复杂的解决方案:使用一对移动的“游标” - 不是Oracle中的数据库游标,而只是一些包含表PK值的变量。 将两个游标都设置为两个表中的最低ID。然后,只需遵循简单的规则:
通过这种方式,您可以获得具有O(1)内存要求的线性O(N)算法(不考虑数据库操作的复杂性)。