On Fri, Feb 13, 2009 at 8:23 AM, He Shiming <heshim...@gmail.com> wrote:
> Hi,
>
> I'm working on this project. It puts a lot of files into a single sqlite
> database (including the actual file content, the program is designed to
> store the actual content) for search. When a search command is issued, I run
> a SELECT command on the FILE_INFO table to get stuff like file name, size
> and date. Then I run a background thread to obtain the actual file content
> from FILE_CONTENT table. The syntax of the query to obtain the file content
> is quite silly. Since I have all the row IDs in the first query, I ran a
> query like this: SELECT bin_content FROM FILE_CONTENT WHERE id in
> (1,2,3,4...);
>
> The query is built by sprintf with a for loop, obviously. Sometimes, there
> can be several hundreds or thousands of numbers in those brackets.
>
> I couldn't help but thinking there might be a way to improve this query
> syntax.
>
> I could mix the two query into one using LEFT JOIN. But that'll slow things
> down, and I wanted some quick response before seeing the actual content. It
> looks like other options will also slow down the second query.
>
> So I would like to know if it's okay to have queries running this way? Is it
> typically done this way or can I improve it?


if the FILE_CONTENT is plain text, you will do well to look at full
text search (FTS3).


-- 
Puneet Kishor http://www.punkish.org/
Nelson Institute for Environmental Studies http://www.nelson.wisc.edu/
Open Source Geospatial Foundation (OSGeo) http://www.osgeo.org/
Sent from: Madison Wisconsin United States.
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to