Subject | RES: [firebird-support] Re: Problem slow sorting/distinct in Firebird |
---|---|
Author | karolbieniaszewski |
Post date | 2012-11-21T07:47:40Z |
Hi,
this is not true that FB use 10 full table scans
it use only one table scan and check 10 combination of fields
try this on emplooye.fdb database
SELECT *
FROM CUSTOMER r
where r.CUSTOMER like '%S%'
15 seq reads
and then try
SELECT *
FROM CUSTOMER r
where r.CUSTOMER like '%S%' or r.CUSTOMER like '%B%' or r.CUSTOMER like '%M%'
you got the same 15 seq reads
if you you notice more reads, then this is an error and you should report it into fbtracker
Karol Bieniaszewski
this is not true that FB use 10 full table scans
it use only one table scan and check 10 combination of fields
try this on emplooye.fdb database
SELECT *
FROM CUSTOMER r
where r.CUSTOMER like '%S%'
15 seq reads
and then try
SELECT *
FROM CUSTOMER r
where r.CUSTOMER like '%S%' or r.CUSTOMER like '%B%' or r.CUSTOMER like '%M%'
you got the same 15 seq reads
if you you notice more reads, then this is an error and you should report it into fbtracker
Karol Bieniaszewski
--- In firebird-support@yahoogroups.com, "Fabiano" <fabianoaspro@...> wrote:
>
> I think the problem is the use of "LCASE(something) like '% something%'"
>
> When FB encounter a %% statement it will perform a full table scan. If you
> have 10 statements like this (and you have much more) you have at least 10
> full table scans to do the job.
>
>
>
> First: Rewrite your SQL code and DO NOT USE no one %% statement. Check if
> you have the correct indexes (tr.ItemType, tr.Marke1, tr.NODELEVEL,
> tr.LINKTYPE) - Try one index for all these fields first.
>
>
>
> When you finish you will have a very fast statement. The next step is create
> concatenate all columns in a virtual one and do only one %% statement.
> Example:
>
>
>
> Istead of:
>
> (LCASE(art.Artikelnummer) like '%a4 papier%') or
> (LCASE(art.Artikelnr_leverancier) like '%a4 papier%')
>
>
>
> Use:
>
> (LCASE(art.Artikelnummer|| art.Artikelnr_leverancier) like '%a4 papier%')
>
>
>
> In this case FB will do only ONE full table scan instead of 2 from the above
> example.
>
>
>
> Sorry about my poor English, I hope you can understand my point of view. If
> you need more help create a simple database with these tables populated
> inside and publish on the internet and answer with the link to download.
>
>
>
> Fabiano.
>
>
>
> [Non-text portions of this message have been removed]
>