Mailinglisten-Archive |
Aloha, > ---------- > Von: Volker Jungbluth[SMTP:Info_(at)_ASP-Services.de] > > In einer MySQL-Datenbank sind Felder, die mehrere Worte beinhalten (z.B. > Kochrezeptbeschreibungen). > > Auf derartige Felder laesst sich natuerlich kein Index setzen! > Falls es Felder mit einer max. Laenge von 255 Zeichen sind, kannst du auch auf Textfelder einen Index setzen. Nur nuetzt er dir nichts, wenn du am Anfang deines Ver- gleichsstrings ein % hast ... z.B where spalte1 like '%Kartoffel' Dann wird der Index nicht benutzt. > Eine Volltextsuchen nach (+Kartoffeln +Braten) dauert extrem lange - die > Performance-Vorteile einer relationalen Datenbank kommen nicht zum > Tragen. > Du hast ja auch keine DB in der 3. Normalform. Sonst haettest du nicht mehrere Suchbegriffe in EINER Spalte. Du koenntest aber eine Suchtabelle basteln, in der alle Woerter und zugehoerige IDs des Textes gespeichert wer- den, z.B. mit 2 Spalten ID und wort Dann haettest du : ID wort 1 Kartoffel 1 Braten 2 Bratwurst usw, je nachdem in welchem Text mit der angegebenen ID das Wort auftaucht. Dann kannst du einen Index auf die Woerter legen, und die Abfrage sollte sich schneller machen lassen. (mit nem Self-Join) > Kennt jemand ein Tool/AddOn für MySQL, das für deratige Felder einen > Volltextindex erstellt? > Noch nie was davon gehoert. > Bei einigen prof. Datenbanken soll so etwas mitgeliefert werden, z.B. > bei ADABAS. > Bei einigen kommerziellen DBs gibts die moeglichkeit, solche Indexe anzulegen, frag mich aber nicht bei welchen... > Oder hat jemand sonst irgendeine Lösung für so etwas parat? > Siehe oben :) Viele Gruesse, Mathias --- *** Abmelden von dieser Mailingliste funktioniert per E-Mail *** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe
php::bar PHP Wiki - Listenarchive