Interesting point about indexes not being updated until the
transaction commits.  I'm still curious why dropping and recreating
the indexes is seen as a bad thing though...

On Fri, Feb 20, 2009 at 2:59 PM, Jay A. Kreibich <j...@kreibi.ch> wrote:
> On Fri, Feb 20, 2009 at 11:56:52AM -0500, Boucher, Michael scratched on the 
> wall:
>> Hi there,
>>
>> I need to migrate data from a different database into a SQLite database.
>> What I've done is written a simple C++ app which opens both databases,
>> does a select from one and an insert into the other.
>>
>> I'm wondering if there is a way to delay indexing on the insert.  I'm
>> going to be inserting between 1 and 4 million records in a couple of the
>> tables.  I want to just get the data into the table, and then let the
>> database handle the indexes after all the inserts are done.
>
>  The indexes will not be updated during a transaction, so you can wrap
>  anywhere from 100 to 10000 or so inserts in a transaction.  When you
>  commit the transaction the index will be updated, but it will be a
>  bit quicker to do it in chunks.
>
>  Also, make sure you bump up the page cache size significantly.
>  Depending on how much RAM you have 200,000 or more is not
>  unreasonable.  That will help with re-index speed.
>
>
>  It is possible you could just do this from sqlite3 by attaching both
>  DBs and running something like:
>
>  INSERT INTO newdb.table ( <columns> ) SELECT <columns> FROM olddb.table
>
>
>  I'm not sure what the performance will be with 4 million rows, but
>  that should wrap itself in a transaction.
>
>   -j
>
> --
> Jay A. Kreibich < J A Y  @  K R E I B I.C H >
>
> "Our opponent is an alien starship packed with atomic bombs.  We have
>  a protractor."   "I'll go home and see if I can scrounge up a ruler
>  and a piece of string."  --from Anathem by Neal Stephenson
> _______________________________________________
> 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

Reply via email to