lulu: Mehrere Spalten durchsuchen

Beitrag lesen

Hallo André

SELECT spalte FROM tabelle WHERE CONCAT(spalte_1, spalte_2, spalte_n) LIKE '%suchwert%';

besser ist es u.U. CONCAT_WS, oder zusätzlich BINARY zu benutzen, da man sonst unerwünschte
Treffer erzielt.

Beispiel:

Nachname  Beruf  Ort
----------------------------------------
Meier    Koch    Erlangen
Schurei  Erfinder  Köln
Schmidt  Hebammme  Iergendwo

wenn man hier die Spalten "zusammenklebt" und z.B. nach 'eier', oder auch 'eierkocher'
sucht ergeben sich Treffer die in dieser Form vermutlich eher unbeabsichtigt sind ;-)

Ich setze das bei einer Suche wie beschrieben ein. Dort fasse ich 2-3 Spalten mit dem Typ VARCHAR und eine vom Typ TEXT zusammen. Bei 20.000 Datensätzen merkt man nicht. Bei 50.000 Datensätzen wurde es schon was langsamer. Bei 100.000 Datensätzen hat es schon so 1-1,5 Minuten gedauert. Die Tabelle war mit den 100.000 Datensätzen so 80 MB groß. Ich hatte zum testen die Datensätze immer kopiert.

hast Du das mal mit einer Abfrage der Art

SELECT spalte
FROM tabelle
WHERE
(spalte_1 LIKE '%suchwert%')
OR
(spalte_2 LIKE '%suchwert%')
OR
(spalte_3 LIKE '%suchwert%')

verglichen?
Das würde mich interessieren wie da die Unterschiede sind (werde ich bei Gelegenheit mal ausprobieren).

Ansonsten benutze ich diese "DRECKIGE" Abfrage auch öfter und bisher war das immer recht
schnell, es waren allerdings auch nie mehr als einige Hundert bis wenige Tausend Datensätze.

Viele Grüße

lulu