Subject | Re: V1.56 query killing my V2.54 app |
---|---|
Author | |
Post date | 2015-04-08T18:44:05Z |
Hello Ann,
I did change the index to only the boolean 1/0 field... then I changed back adding a part of the primary key to boost a high graularity on the index trying to make things work as I needed.
After removing the compuond part and running some tests with and without the +0 on the query I got:
With the +0
PLAN SORT (SORT (JOIN (B INDEX (IXColDetSmIntFlag),A INDEX (PK_msttbl))))
Prepare time = 47ms
Execute time = 2s 968ms
Avg fetch time = 102,34 ms
Current memory = 2.129.816
Max memory = 2.201.604
Memory buffers = 75
Reads from disk to cache = 302
Writes from cache to disk = 0
Fetches from cache = 1.555
without the +0
PLAN SORT (SORT (JOIN (A NATURAL, B INDEX (FK_dettbl))))
Prepare time = 16ms
Execute time = 1m 20s 562ms
Avg fetch time = 2.778,00 ms
Current memory = 2.124.564
Max memory = 2.201.604
Memory buffers = 75
Reads from disk to cache = 157.563
Writes from cache to disk = 0
Fetches from cache = 2.909.887
Apparently I made it slightly better using some of v2.5x improvements.
After more than a decade of Firebird I'm more than used to using the +0 to get the results desired from the engine but still, I find it illogical that scanning a table with "NATURAL" doesn't have a much higher cost than any other index to the engine.
Well... new engine, new lessons.
Thanks.
Andrew
>Firebird 1.5 considered the index a good candidate, even if you onlymatched the first part. In later, smarter versions, it recognizes that the first part alone is not very good.
I did change the index to only the boolean 1/0 field... then I changed back adding a part of the primary key to boost a high graularity on the index trying to make things work as I needed.
After removing the compuond part and running some tests with and without the +0 on the query I got:
With the +0
PLAN SORT (SORT (JOIN (B INDEX (IXColDetSmIntFlag),A INDEX (PK_msttbl))))
Prepare time = 47ms
Execute time = 2s 968ms
Avg fetch time = 102,34 ms
Current memory = 2.129.816
Max memory = 2.201.604
Memory buffers = 75
Reads from disk to cache = 302
Writes from cache to disk = 0
Fetches from cache = 1.555
without the +0
PLAN SORT (SORT (JOIN (A NATURAL, B INDEX (FK_dettbl))))
Prepare time = 16ms
Execute time = 1m 20s 562ms
Avg fetch time = 2.778,00 ms
Current memory = 2.124.564
Max memory = 2.201.604
Memory buffers = 75
Reads from disk to cache = 157.563
Writes from cache to disk = 0
Fetches from cache = 2.909.887
Apparently I made it slightly better using some of v2.5x improvements.
After more than a decade of Firebird I'm more than used to using the +0 to get the results desired from the engine but still, I find it illogical that scanning a table with "NATURAL" doesn't have a much higher cost than any other index to the engine.
Well... new engine, new lessons.
Thanks.
Andrew