Hello! Because update == delete + insert you must have fragmentation. The degree of the fragmentation is proporsional to count of replaces. So you may have problems after inserting a lot of dublicates.
Are you really need to insert or update? 1. I'm using few hundread MB databases like CREATE TABLE telephony_log ( ... unique (nas_name,port,duration,origin,date_start) on conflict ignore ); Performance of "ignore" conflict resolution is more better. 2. May be unique index can be better than text PK 3. May be "insert into t select * from temp_t" can be helpful 4. You can mark records as deleted without deleting it immediate. And delete old records periodically whith vacuum after this operation. ================================== PRAGMA auto_vacuum=0; pragma default_cache_size=200000; CREATE TABLE t (k varchar(50) not null, d text not null, e datetime,is_new int default 1); create index t_k_idx on t(k); begin; CREATE TEMP TABLE temp_t (k varchar(50) primary key not null, d text not null, e datetime,is_new int default 1); insert into temp_t ... update t set is_new=0 where k in (select k from temp_t); insert into t select * from temp_t; commit; By cron: delete from t where is_new=0; vacuum; Best regards, Alexey Pechnikov. http://pechnikov.tel/ _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users