On Fri, Sep 5, 2014 at 8:43 AM, Stefan Heymann li...@stefanheymann.de
[firebird-support] <firebird-support@yahoogroups.com> wrote:

> > I’m using Firebird 2.5.3, and I am looking for text in a emo field, eg.
> > I’m tempted to do something like
> >   Select * from mytable t where lowercase(t.mymemo) like ‘%find me%’
> > but since this memo field could be enormous, I’m guessing that wold be
> horribly inefficient.
>
> I use upper() for that and it's surprisingly fast (lowercase shouldn't
> be different).
>
> What you can do is try to use a case insensitive collation like
> unicode_ci or unicode_ci_ai, but I don't know if that really speeds
> things up.
>

As Set said before, no index is going to help unless the text string
is at the very beginning of the field.  CONTAINING is the best bet -
it's case insensitive, but doesn't take wild cards, so if you're looking
for "%Find%me%", you'll need to use LIKE or SIMILAR and upcase
the incoming value. However, you;re going to read every byte of
every instance of that blob (memo) field - well, every byte of every
instance that does not contain your value, and every byte up to the
value if it does exist.

What's needed is a full-text index, which Firebird doesn't offer.  Lucene
and others produce full-text indexes that can be used with Firebird (I
think, haven't tried it).

Good luck,

Ann
  • ... Maya Opperman m...@omniaccounts.co.za [firebird-support]
    • ... Svein Erling Tysvær svein.erling.tysv...@kreftregisteret.no [firebird-support]
      • ... Maya Opperman m...@omniaccounts.co.za [firebird-support]
    • ... 'Fabiano - Desenvolvimento SCI' fabi...@sci10.com.br [firebird-support]
      • ... Svein Erling Tysvær svein.erling.tysv...@kreftregisteret.no [firebird-support]
    • ... Stefan Heymann li...@stefanheymann.de [firebird-support]
      • ... Ann Harrison aharri...@ibphoenix.com [firebird-support]
        • ... Reinier Olislagers reinierolislag...@gmail.com [firebird-support]

Reply via email to