Hi all,

I've modified the query with the specified points and thereby put the times, 
there is still a difference between Firebird and MySQL but the difference is 
getting smaller. Thanks for that.

Are there any other options .... ?


Firebird (Execution time: +/- 0.878s):

SELECT  FIRST 30 SKIP 0 distinct tr.NodePosition, tr.IdLink, tr.IdTargetLink, 
tr.IdItem
FROM Tree3 tr
inner join article3_1 art on art.idarticle = Tr.iditem 
WHERE 
tr.NODELEVEL =5  and tr.LINKTYPE <> 5 and tr.ItemType = 2 AND tr.Market1 = 1 and
 (lower(coalesce(art.Artikelnummer , '') || ';'
|| coalesce(art.Artikelnr_leverancier, '') || ';'
|| coalesce(art.Artikelnaam1, '') || ';'
|| coalesce(art.Artikelnaam2, '') || ';'
|| coalesce(art.MERK, '') || ';'
|| coalesce(art.EAN, '') || ';'
|| coalesce(art.ALTARTNR1, '') || ';'
|| coalesce(art.ALTARTNR2, '')

) like '%a4%')

AND (lower(coalesce(art.Artikelnummer , '') || ';'
|| coalesce(art.Artikelnr_leverancier, '') || ';'
|| coalesce(art.Artikelnaam1, '') || ';'
|| coalesce(art.Artikelnaam2, '') || ';'
|| coalesce(art.MERK, '') || ';'
|| coalesce(art.EAN, '') || ';'
|| coalesce(art.ALTARTNR1, '') || ';'
|| coalesce(art.ALTARTNR2, '')

) like '%papier%')

ORDER BY tr.NodePosition 



MySQL (Execution time: +/- 0.6502s):

SELECT distinct  tr.NodePosition, tr.IdLink, tr.IdTargetLink, tr.IdItem
FROM Tree3 tr
inner join article3_1 art on art.idarticle = Tr.iditem and tr.NODELEVEL =5  and 
tr.LINKTYPE <> 5 and tr.ItemType = 2 AND tr.Market1 = 1
WHERE

concat_ws(';', art.artikelnummer, art.artikelnaam1, art.artikelnaam2, art.ean, 
art.merk, art.ALTARTNR1, art.ALTARTNR2) like '%a4%' and
concat_ws(';', art.artikelnummer, art.artikelnaam1, art.artikelnaam2, art.ean, 
art.merk, art.ALTARTNR1, art.ALTARTNR2) like '%papier%'

ORDER BY tr.NodePosition
limit 30;





--- In firebird-support@yahoogroups.com, "Fabiano" <fabianoaspro@...> wrote:
>
> Thanks Poul!
> 
>  
> 
> The unique problem with this approach is when you have a null value in one
> of these columns it will not work correctly.
> 
> So, the 'correct' way is use coalesce do convert null value in empty string:
> 
> (LCASE(coalesce(art.Artikelnummer , '')||
> coalesce(art.Artikelnr_leverancier, '')) like '%a4 papier%')
> 
> Another tip is create a calculated column in the table with the above
> statement - with the name find_name.
> 
> So, you can easily write a simple SQL like:
> 
> Select * from some_table where find_name like '%a4 papier%'
> 
> 
> 
> 
> 
> 
> 
> [Non-text portions of this message have been removed]
>

Reply via email to