On Fri, Oct 23, 2015 at 2:40 AM, drci...@yahoo.com [firebird-support] <
firebird-support@yahoogroups.com> wrote:

>
>
> I don't think I understand you fully. Indexed reads a hudreds of times
> faster than non indexed.
>

Yes, when you're looking for a specific value.  When you're looking for
something that is NOT a specific value, then it's often faster to read the
table in its storage order rather than reading through an index.  In fact,
if I remember correctly, the Firebird optimizer will never choose indexed
access when the lookup is based on non-equality.


> And the table will have millions of records, so I do need them.
>

Reading millions of records through an index is unlikely to be faster than
reading the same millions in storage order.
Normally, when Firebird reads records through an index, it constructs a bit
map of the record numbers of records that match the indexed condition.  The
record numbers include the page on which the record is located.   If the
bitmap include 90% of the pages in the table, Firebird will then read the
table in storage order (which is also record number order) skipping 10% of
the pages, and the work that went into building the bitmap is completely
wasted.

"then this is cheaper to scan table (500 records) then use 400 indexed
> reads"
> What do you mean scan table? How do I do that? Like a stored procedure
> with for select? I don't understand, please explain.
>

You don't have to do anything.  The Firebird optimizer analyzes your query,
attempting to find indexed paths to data.  If it doesn't find usable
indexed access, it resorts to a table scan.


Good luck,

Ann
  • [firebird-suppo... drci...@yahoo.com [firebird-support]
    • Re: [fireb... liviusliv...@poczta.onet.pl [firebird-support]
      • [fireb... drci...@yahoo.com [firebird-support]
        • Re... Svein Erling Tysvær setys...@gmail.com [firebird-support]
        • Re... Ann Harrison aharri...@ibphoenix.com [firebird-support]

Reply via email to