You're probably seeing disk thrashing.
Try increasing your database cache size:
.pragma cache_size XX
It's in kilobytes. Try and make it as big as your database if you can. In
other words, cache the whole thing.
Secondly, you may want to try using the FTS3/FTS4 search capability if your CSV
values don't change much. I think that's going to be quite a bit faster for
what you're trying to do.
Put your 0.2M values into their own table and search that using FTS3/4.
So you do something like this:
create table mytable(c text);
insert into mytable values('345');
insert into mytable values('999');
create virtual table csv using fts3(t text);
insert into csv values('123,234,345,456,567');
select * from mytable where (select count(*) from csv where csv.t match
mytable.c) > 1;
I get the '345' entry from this.
Michael D. Black
Senior Scientist
Advanced Analytics Directorate
Advanced GEOINT Solutions Operating Unit
Northrop Grumman Information Systems
From: sqlite-users-boun...@sqlite.org [sqlite-users-boun...@sqlite.org] on
behalf of Virparia, Chetan J (GE Energy) [chetan.virpa...@ge.com]
Sent: Wednesday, December 21, 2011 10:35 PM
To: sqlite-users@sqlite.org
Cc: Kurien, Jessy S (GE Energy); Singh, Rituraj (GE Energy); R, Raghuraman (GE
Energy)
Subject: EXT :[sqlite] Sqlite Concurrent access issue
Hi,
We have been using SQLite database for a while using single threaded WCF
service for our condition based monitor solution. Since, we are facing
issues related to scalability for our next generation products due to
single threaded architecture, We have been working on using SQLite
concurrency access feature through multiple threads and enabling WCF
concurrency feature.
We did a small prototype using SQLite using ADO.NET by changing
Isolation mode = ReadCommited and executed few queries sequentially and
parallel and found huge performance improvement. However, when we
executed huge select query found that it degraded performance
drastically so it will be great help if someone help me out to figure
out right usage pattern for this scenario.
Here is the execution timing of my query
Database size : 856 MB
Query : Select * from mytable where in ( around 0.2 million
comma separated values)
Single query execution time: 1388 MS
10 Sequential queries total execution time : 13380 MS
10 Parallel queries total execution time: 37370 MS
___
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