You also need to increase your cache size to match the mysql performance pragma cache 100000; Michael D. Black Senior Scientist Northrop Grumman Mission Systems
________________________________ From: sqlite-users-boun...@sqlite.org on behalf of Michael Ash Sent: Fri 5/28/2010 9:57 AM To: sqlite-users@sqlite.org Subject: Re: [sqlite] Aggregate and join query very slow Thank you very much. Both replies pointed to indexes. So I changed the indexes and markedly improved performance from 12 seconds to about 1.5 seconds for the faster variant (using nested SELECTS) and about 2.2 second for the slower variant. Per suggestions, I indexed year and media on the big table. So I now have separate indexes for the key variable (releasenumber) and for year and for media. Would it make more sense to have a single index for all three, thus: CREATE UNIQUE INDEX r ON release_cl (year,media,releasenumber); I remain concerned that I am not using indexes as well as possible. The query still takes many times longer than does the same query on MySQL. Thank you very much again for the helpful responses. Best, Michael Ash > 3. Re: Aggregate and join query very slow (Max Vlasov) > Message: 3 > Date: Thu, 27 May 2010 17:26:10 +0400 > From: Max Vlasov <max.vla...@gmail.com> > Subject: Re: [sqlite] Aggregate and join query very slow > To: General Discussion of SQLite Database <sqlite-users@sqlite.org> > Message-ID: > <aanlktinqmk9csyaguoyllo2okpmsyq3di-tzbuahw...@mail.gmail.com> > Content-Type: text/plain; charset=ISO-8859-1 > > On Thu, May 27, 2010 at 3:07 PM, Michael Ash <m...@econs.umass.edu> wrote: > >> ...These are large tables (52,355 records in facility and 4,085,137 in >> release_cl). >> >> ... >> sqlite> explain query plan >> ...> SELECT name,score >> ...> FROM facility f, (SELECT facilitynumber,SUM(score_rev) AS score >> ...> FROM release_cl >> ...> WHERE media<3 >> ...> AND year=2006 >> ...> GROUP BY facilitynumber) r >> > > > Michael, from what I see, if your release_cl table is not properly indexed > to be quickly aggregated (media and year field), this will lead to full > table reading (so all the data of your 4M records). If it's properly > indexed, and the result number of records of this select is big, consider > adding non-indexed fields to this (or brand-new) index since otherwise > sqlite quickly finds records with this index, but have to look up main data > tree to retrieve other fields. > > 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