Hi,

I'm experimenting with the new code in SQLite's trunk and measuring
the improvements in index creation. The I/O required to create index
and also the disk space requirements has reduced significantly, so the
CREATE INDEX is now dominated by CPU time. Almost no memory is used
for cache though, which I find odd.

The time to create an index on my 266 Mb experimental database is more
than 9 minutes. The database is available at
http://www.emclient.com/temp/mail_index.zip and the command I use to
create the index is

  CREATE INDEX "idx_MailAddresses_address" ON "MailAddresses" ("type",
"address", "parentId");

I had run the shell under profiler and most of the time is spent in
the following code path:

Name / Inclusive % time / Exclusive % time

sqlite3BtreeInsert / 76,68 / 0,40
.. btreeMoveto / 47,75 / 0,18
.... sqlite3BtreeMovetoUnpacked / 40,49 / 3,33
...... sqlite3VdbeRecordCompare / 27,04 / 4,69
........ sqlite3MemCompare / 15,36 / 7,85

I'm wondering if there's any way to speed up the index creation. Is
larger cache size supposed to improve the performance? Did I perhaps
hit some "worst case" scenario?

Best regards,
Filip Navara
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to