Nach Feldern mit Wort suchen
Michael
- datenbank
Hallo Forum.
Ich versuche mit MySQL alle Zeilen anzuwählen, in denen ein bestimmtes wort vorkommt. Also wenn der Eintrag "Ich bin eine Zeile" lautet soll bei der Suche nach:
"eine" ein Treffer landen,
bei "ein" der Treffer nicht landen.
Ich habe nun überlegt, dies per "WHERE Field LIKE '% eine %' zu verwirklichen. Ist das die gängige Methode? Danke!
Hi!
Ich habe nun überlegt, dies per "WHERE Field LIKE '% eine %' zu verwirklichen. Ist das die gängige Methode? Danke!
Oehm. Ja.
Jetzt stellt sich mir gerade nur das Problem, dass wenn das Wort an der ersten Stelle steht, nicht gefunden wird, Muss ich nun so formulieren:
WHERE Feld LIKE '% eine %' || Feld LIKE 'eine %' || Feld LIKE '% eine' || Feld = 'eine';
Kommt mir ein wenig ungünstig vor...
Hi,
Kommt mir ein wenig ungünstig vor...
das Konstrukt, dass Du gerade formuliert hast, ist gut, bis auf eine Sache: Du setzt LIKE auf eine Weise ein, die das Verwenden eines Index' unmöglich macht. Dein Statement wird *immer* auf einen FULL TABLE SCAN hinauslaufen. Um noch unperformanter zu werden, benötigt es schon erhebliche Kreativität[1].
Arbeite mit einem FULLTEXT-Index.
Cheatah
[1] Aber ja, es ist natürlich möglich, beispielsweise indem man zu unterschiedlichen Sortierungen zwingt.
Was wenn ich keinen Full Index hinzufügen kann, zum Beispiel weil ich keine entsprechenden Rechte für die Datenbank besitze?
Kann ich trotzdem irgendwas verbessern?
Hi,
Was wenn ich keinen Full Index hinzufügen kann, zum Beispiel weil ich keine entsprechenden Rechte für die Datenbank besitze?
wie willst Du eine Datenbank benutzen, bei der Du nicht mal einen Index setzen kannst?
Kann ich trotzdem irgendwas verbessern?
Das vorgesehene Mittel für Dein Problem ist ein FULLTEXT-Index. Jedes andere Mittel ist für Dein Problem nicht vorgesehen.
Cheatah
Hi,
Ich habe nun überlegt, dies per "WHERE Field LIKE '% eine %' zu verwirklichen. Ist das die gängige Methode? Danke!
es ist die gängige Methode, um die Datenbank in die Knie zu zwingen. Verwende einen Index vom Typ FULLTEXT.
Cheatah
Hi,
Ich habe nun überlegt, dies per "WHERE Field LIKE '% eine %' zu verwirklichen. Ist das die gängige Methode? Danke!
es ist die gängige Methode, um die Datenbank in die Knie zu zwingen. Verwende einen Index vom Typ FULLTEXT.
Cheatah
Und hier ist er mal wieder einfach nur besser. *seuftz*
Hi,
Und hier ist er mal wieder einfach nur besser. *seuftz*
nicht mehr. Oder hast Du nicht daraus gelernt? ;-)
Cheatah
Hi,
Ich habe nun überlegt, dies per "WHERE Field LIKE '% eine %' zu verwirklichen. Ist das die gängige Methode? Danke!
es ist die gängige Methode, um die Datenbank in die Knie zu zwingen. Verwende einen Index vom Typ FULLTEXT.
Cheatah
Kommt ja auf die Größe dessen an, was er machen will ...
Hi,
Kommt ja auf die Größe dessen an, was er machen will ...
ja, na klar. Wenn die Tabelle nur zehn, zwanzig Datensätze hat und die Abfrage nicht allzu oft durchgeführt wird, kann man auch mit LIKE arbeiten. Ab einer gewissen Größe wird ein FULL TABLE SCAN, der aus "LIKE '%...%'" zwangsläufig resultiert, aber tödlich.
Cheatah
Hallo Forum.
Ich versuche mit MySQL alle Zeilen anzuwählen, in denen ein bestimmtes wort vorkommt. Also wenn der Eintrag "Ich bin eine Zeile" lautet soll bei der Suche nach:"eine" ein Treffer landen,
bei "ein" der Treffer nicht landen.Ich habe nun überlegt, dies per "WHERE Field LIKE '% eine %' zu verwirklichen. Ist das die gängige Methode? Danke!
Ja, like "%eine" . Findet aber auch "Weine".