Il 31/08/2011 10.57, Mark Rotteveel ha scritto:
> On Tue, 30 Aug 2011 23:27:01 +0200, Fulvio Senore<mail...@fsoft.it>
> wrote:
>> When I open a catalog (a Firebird database) the program executes a
>> number of queries to (partially) fill some tree controls that work like
>> folders in a file system. The queries are always very simple, something
>> like "SELECT * FROM Table WHERE someID = 5". The number of queries that
>> are executed when opening a catalog changes with the stored data: for my
>
>> own catalog the program executes approximately 600 queries.
>
> Unrelated to your actual problem: I don't know your database structure and
> requirements, but a query explosion to 600 queries for opening a catalog
> (which on the surface sounds easy) seems a bit excessive. Are you sure you
> aren't falling in the N+1 query trap, where 1 query could suffice?
>
> Mark

I didn't know anything about the N+1 query trap, but Google was my friend.
Yes, that is my problem, but I don't know how to find a better solution.

My program shows 3 user selectable views. For each view a tree control 
at the left shows a structure of "folders" and "subfolders" where images 
are organized.

When I open a catalog I load the first 2 levels of items in the tree 
controls, so that users can see all the first level items and they can 
see if an item has sub-items so it can be expanded.
Further items loading in the tree controls happens when the user expands 
an existing item.

Of course if the user has a lot of items in the tree controls this leads 
to an explosion of queries. This has never been a problem before, but I 
realize that a better solution would be welcome.

At the moment I enumerate all the first level items with a query, then I 
execute a query for each item to find its sub-items.
Items are stored in a single table, with a parent-child relationship 
created using a FATHER_ID field.
I probably need a better solution, but probably this question would be 
better suited for the Firebird Support list.

Fulvio

------------------------------------------------------------------------------
Special Offer -- Download ArcSight Logger for FREE!
Finally, a world-class log management solution at an even better 
price-free! And you'll get a free "Love Thy Logs" t-shirt when you
download Logger. Secure your free ArcSight Logger TODAY!
http://p.sf.net/sfu/arcsisghtdev2dev
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to