So try creating your additional index, use the BEGIN/COMMIT, and let us know how it performs for you in comparison. I'll bet its faster even with the new index. You didn't say if you were already doing the BEGIN/COMMIT. Michael D. Black Senior Scientist Northrop Grumman Mission Systems
________________________________ From: sqlite-users-boun...@sqlite.org on behalf of Nathan Biggs Sent: Fri 4/23/2010 8:05 AM To: General Discussion of SQLite Database Subject: Re: [sqlite] Direct access of table data Yes, I do use batch inserts. On 4/23/2010 8:56 AM, Black, Michael (IS) wrote: > > If insert speed is important are you doing batch inserts? > If so, you want to do a BEGIN/COMMIT to speed up your inserts a LOT. > Default action is to defer which mean no database locks occur during > your inserts. > http://www.sqlite.org/lang_transaction.html > > Michael D. Black > Senior Scientist > Northrop Grumman Mission Systems > > > ________________________________ > > From: sqlite-users-boun...@sqlite.org on behalf of Nathan Biggs > Sent: Fri 4/23/2010 7:50 AM > To: General Discussion of SQLite Database > Subject: Re: [sqlite] Direct access of table data > > > > Max, thanks for the information. That will be very useful for other > table queries, but not for this one. For my table in questions there > are 18 fields. I think an index with 18 fields would be a little crazy. > > > On 4/23/2010 3:06 AM, Max Vlasov wrote: > > > > > ...As I add more restrictions on the where-clause it > > > tends to slow down. I realize that this is due to my indexes, but > can't > > > add a lot of indexes because it slows down the insert speed which is > > > more important than the query speed. > > > > > > > > > Nathan, maybe you already knew but just in case... > > > > if your select relies on an index and also queries fields not > presented in > > that index, consider appending these extra fields to the index. It > doesn't > > make sense in terms of search speed, (moreover it will increas the db > > size), > > but this will save time since no extra lookup will be taking place. > > > > So if you have table > > CREATE TABLE a, b, c, > > > > and index > > CREATE INDEX ON a, b > > > > and use query similar to > > SELECT a, b, c ... WHERE a= and b = > > > > sqlite will do extra lookup to get c from the table, > > > > but if you change the index to > > > > CREATE INDEX ON a, b, c > > the same query will get all the data from the index itself saving > time and > > the amount of data flow. > > > > I did a quick test and it showed not only a noticable difference in > time, > > but also a significant difference in amount of the data read. > > > > Max, > > maxerist.net > > _______________________________________________ > > 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 > > _______________________________________________ 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