Subject | Re: FW: IBO seems slower for some things compared with the BDE |
---|---|
Author | Rhett Rodewald |
Post date | 2003-07-03T08:20:36Z |
Enrico,
I can't guarantee that this is where _your_ performance problems are, but
mine were all in the "SchemaIndexDefinitions" procedure. (Check your IBO
source.) There is a main query (with several sub-queries returned as
fields) that is looped through, and a seperate "sub-query" is performed on
each record of the original (main) query. I think this sub-query is the
main bottleneck. (I can't test it very well at the moment due to the fact
I upgraded my dev. system to Firebird 1.5, which fixes this problem.)
Anyway, the subquery is:
SELECT RDB$FIELD_NAME
FROM RDB$INDEX_SEGMENTS
WHERE RDB$INDEX_NAME = ?Name
ORDER BY RDB$FIELD_POSITION
Adding an index to the RDB$INDEX_SEGMENTS table on the RDB$INDEX_NAME
should help in Firebird 1.0, and perhaps Interbase. You may find others,
but I would recommend touching the system tables as little as possible.
Firebird 1.5 already has this index. NOTE Helen's warning elsewhere in
this thread NOT to do this at all, and the caveats of attempting it anyway.
I haven't tried it yet, but I likely will as an experiment. Alternately,
I will try to push ahead to FB1.5 if it proves solid enough.
--Rhett
I can't guarantee that this is where _your_ performance problems are, but
mine were all in the "SchemaIndexDefinitions" procedure. (Check your IBO
source.) There is a main query (with several sub-queries returned as
fields) that is looped through, and a seperate "sub-query" is performed on
each record of the original (main) query. I think this sub-query is the
main bottleneck. (I can't test it very well at the moment due to the fact
I upgraded my dev. system to Firebird 1.5, which fixes this problem.)
Anyway, the subquery is:
SELECT RDB$FIELD_NAME
FROM RDB$INDEX_SEGMENTS
WHERE RDB$INDEX_NAME = ?Name
ORDER BY RDB$FIELD_POSITION
Adding an index to the RDB$INDEX_SEGMENTS table on the RDB$INDEX_NAME
should help in Firebird 1.0, and perhaps Interbase. You may find others,
but I would recommend touching the system tables as little as possible.
Firebird 1.5 already has this index. NOTE Helen's warning elsewhere in
this thread NOT to do this at all, and the caveats of attempting it anyway.
I haven't tried it yet, but I likely will as an experiment. Alternately,
I will try to push ahead to FB1.5 if it proves solid enough.
--Rhett
> From: "Enrico Raviglione" <e.raviglione@...>
>
> If the problem are the queries performed poorly, there are anyone that
> know the complete index list that i must create in my db for reduce this
> start-up time ?
>
> Bye,
> Enrico Raviglione.
>
>
> -----Messaggio originale-----
> Da: Rhett Rodewald [mailto:rhett.rodewald@...] Inviato:
> mercoledì 2 luglio 2003 19.12
> A: 'IBObjects Group'
> Oggetto: Re: [IBO] Re: FW: IBO seems slower for some things compared
> with the BDE
>
>
>
> Daniel,
> Thanks for that. I originally tested this several months ago -- and
> when I returned to try to isolate this problem (since it was brought up),
> I was
>
> startled to find that it had disappeared. Unfortunately, my client is
> still using Firebird 1.0, but I have moved my developement system to 1.5
>
> for testing. My 3+ minute delay is now about 3-6 seconds. (Using a
> local server -- I don't expect the client's network system to be _quite_
> as
> fast) Kudos to the Firebird team, that little change made a world of
> difference.
>
> Does anyone know -- can I add indexes to the sytem tables (i.e. Index
> RDB$INDEX_SEGMENTS on RDB$INDEX_NAME) in FB 1.0? (I _know_ that's
> screwing with system tables... and inherently dangerous), but the
> potential performance increase is incredible.
> Thanks Daniel,
> --Rhett
>
>