Thanks for responses :) Whereby "objects" you mean "rows," no? You are getting upward of 5500 > sustained inserts per second. That sounds pretty good. That said, are > you using transactions? See what difference that makes. >
Yep, I meant rows. Inserting rows in the data table is much faster (1.000.000 in 20 secs or so). I am of course not expecting that inserts into a tree is as fast as a flat table, but a little boost wouldnt hurt. Its probably worth mentioning, that I am using a memory resident db, which I create at startup. The idea is to simply have a fast memory cache. I am have tried to wrap it inside a transaction, my pattern is basically sqlite3_exec(db, "BEGIN TRANSACTION;", 0, 0, 0); sqlite3_prepare_v2( <main table>); sqlite3_prepare_v2( <rtree>); for(.....) { sqlite3_bind(<main table>); sqlite3_step(<main table>); sqlite3_reset(<main table>); sqlite3_bind(<rtree>); sqlite3_step(<rtree>); sqlite3_reset(<rtree>); } sqlite3_finalize(<main table>); sqlite3_finalize(<rtree>); sqlite3_exec(db, "COMMIT TRANSACTION;", 0, 0, 0); One thing I havent figured out, is, how is a transaction related to prepared statements ? I mean, using bind(), step() etc, there is a transaction handle, while BEGIN/END seems to be "global" ? (thinking of threading etc) I'll try to fiddle with Julian's idea. Thanks, Oyvind > > > > > > > Oyvind > > _______________________________________________ > > sqlite-users mailing list > > sqlite-users@sqlite.org > > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > > > > > -- > Puneet Kishor http://www.punkish.org/ > Nelson Institute for Environmental Studies http://www.nelson.wisc.edu/ > Open Source Geospatial Foundation (OSGeo) http://www.osgeo.org/ > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users