Index Mysql

Alles, was MySQL betrifft, kann hier besprochen werden.

Index Mysql

Postby Sven » 02. April 2003 19:26

Hallo zusammen,

ich habe folgendes Problem:

Wie ich der Beschreibung von MySQL entnehmen konnte, werden die Indizes bei "like" ´Vergleichen mit führenden % nicht verwendet.

Bsp. like '%test'

Leider konnte ich bis jetzt nichts finden, wie man das umgehen kann bzw. wie man einen Index aufbauen muss, damit man so suchen kann.

Momentan dauert es bei meinen 42000 Datensätzen sehr lange bis ich ein Ergebnis bekomme.

Vielen Dank für Eure Antworten.
Sven
 

Postby Frank » 03. April 2003 03:36

Ich bin zwar MySql-Newbie, spreche aber fliessend SQL (DB2), ich schätze darum kann ich dir mit einiger sicherheit sagen "Geht nicht".

Der Grund liegt im Aufbau eines Index. Du kannst dir das stark vereinfacht mal wie eine sortierte Liste vorstellen.

Also nehmen wir mal an, deine Tabelle enthielte alle Einwohner einer Stadt, mit Adresse und Telefonnummer. und dein Index wäre das Telefonbuch. Jetzt such mal Im Telefonbuch nach '%blah'. Siehste? Aus genau dem Grund muss auch MySql bei einem Like, bei dem der Anfang unbekannt ist, einen Full-Table-Scan machen.

Ich habe mich mit der Volltext-Suche von MySql noch nicht auseinandergesetzt, vielleicht kann man damit was machen... Was ich allerdings festgestellt habe ist, das das Einfügen von Datensätzen mit aktivierter Volltextsuche lächerlich langsam ist.
Frank
 

Postby FuzzyWutz » 11. April 2003 09:44

Ich würde das mit LIKE lassen.... das is schleichen pur!

Probier mal "WHERE INSTR(<feldname>,"%test")>1", das geht recht fix...
FuzzyWutz
 


Return to MySQL

Who is online

Users browsing this forum: No registered users and 3 guests