Der folgende Beitrag wurde am 01. 06. 2007, 19:43 Uhr von Michael veröffentlicht.
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!
Der folgende Beitrag wurde am 01. 06. 2007, 19:48 Uhr von Steel veröffentlicht.
Hi!
> Ich habe nun überlegt, dies per "WHERE Field LIKE '% eine %' zu verwirklichen. Ist das die gängige Methode? Danke!
Oehm. Ja.
Der folgende Beitrag wurde am 01. 06. 2007, 19:53 Uhr von Michael veröffentlicht.
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...
Der folgende Beitrag wurde am 01. 06. 2007, 19:57 Uhr von Cheatah veröffentlicht.
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.
--
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes
Der folgende Beitrag wurde am 02. 06. 2007, 03:22 Uhr von Michael veröffentlicht.
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?
Der folgende Beitrag wurde am 02. 06. 2007, 13:00 Uhr von Cheatah veröffentlicht.
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
--
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes
Der folgende Beitrag wurde am 01. 06. 2007, 19:48 Uhr von Cheatah veröffentlicht.
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
--
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes
Der folgende Beitrag wurde am 01. 06. 2007, 19:49 Uhr von Steel veröffentlicht.
> 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*
Der folgende Beitrag wurde am 01. 06. 2007, 19:57 Uhr von Cheatah veröffentlicht.
Hi,
> Und hier ist er mal wieder einfach nur besser. *seuftz*
nicht mehr. Oder hast Du nicht daraus gelernt? ;-)
Cheatah
--
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes
Der folgende Beitrag wurde am 01. 06. 2007, 19:50 Uhr von Bruno ohne Zähne veröffentlicht.
> 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 ...
Der folgende Beitrag wurde am 01. 06. 2007, 19:54 Uhr von Cheatah veröffentlicht.
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
--
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes
Der folgende Beitrag wurde am 01. 06. 2007, 19:49 Uhr von Bruno ohne Zähne veröffentlicht.
> 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".
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4