Re: latin1_german2_ci, utf-8
am 21.05.2006 21:56:36 von Axel Schwenke
"steffen horst" wrote:
> hallo,
>
>> Laut Handbuch [1] vergleicht LIKE zeichenweise. Damit funktionieren
>> Ãquivalenzen mit unterschiedlicher Anzahl Zeichen nicht. Beispiel:
>
>> Abhilfe weià ich leider keine.
>
> Die Umformung in REGEXP funkioniert wohl.
Ja, nur wird dann kein Index verwendet. Wenn du WHERE ... LIKE ...
Ausdrücke hast, die Indizes verwenden *können* (also im Prinzip nur
rechts-trunkierte Suchmuster), dann könnte es eine Option sein, die
Daten in einer zweiten (redundanten) Spalte normiert abzulegen.
> WHERE CONCAT_WS(' ', ) REGEXP '[[:<:]][[:>:]]'
>
> Ich würde schätzen, es ist sinnvoller, die Spalten zunächst zu
> konkatenieren, als den regulären Ausdruck auf die einzelnen Spalten
> anzuwenden, oder?
Wenn du über mehrere Spalten suchen willst, dürfe ein FULLTEXT Index
die beste Variante sein. Da funktionieren dann auch Collations.
XL
Re: latin1_german2_ci, utf-8
am 22.05.2006 12:03:15 von steffen horst
> Ja, nur wird dann kein Index verwendet. Wenn du WHERE ... LIKE ...
> Ausdrücke hast, die Indizes verwenden *können* (also im Prinzip nur
> rechts-trunkierte Suchmuster), dann könnte es eine Option sein, die
> Daten in einer zweiten (redundanten) Spalte normiert abzulegen.
Da es sich voraussichtlich nur um ca. 1000 Zeilen handeln wird, ist es
eigentlich nicht schlimm, wenn kein Index verwendet wird.
>> WHERE CONCAT_WS(' ', ) REGEXP '[[:<:]][[:>:]]'
>> Ich würde schätzen, es ist sinnvoller, die Spalten zunächst zu
>> konkatenieren, als den regulären Ausdruck auf die einzelnen Spalten
>> anzuwenden, oder?
> Wenn du über mehrere Spalten suchen willst, dürfe ein FULLTEXT Index
> die beste Variante sein. Da funktionieren dann auch Collations.
Eigentlich wollte ich es zulassen, dass Wörter gefunden werden, die mit
dem Suchwort anfangen (' wort%') oder enden ('%wort '). [Ich hab das oben
verkürzt hingeschrieben.] Wie Du schon schriebst, beim Fulltext-Index
sind immerhin rechts-trunkierte Suchmuster möglich.
Kurz gesagt: Endweder schnelle Suche mit FULLTEXT-Index oder
mittels langsamen REGEXP zusätzliche Suchergebnisse, die mit dem Suchwort
enden.
Mischen lassen sich die beiden Ansätze auch nicht sinnvoll.
Vielen Dank für die Hilfe!
Schöne GrüÃe, Steffen