Michael Spiller: MYSQL - Fulltext und Abfrage über mehrere Tabellen

Beitrag lesen

Hallo!

Ich möchte in einer Datenbank mehrere Tabellen über ein Feld "user_id" verknüpft volltextmäßig durchsuchen lassen. Habe in den Tabellen jeweils Fulltext-Indexe erstellt und in der SELECT-Abfrage JOIN verwendet. Das Problem ist nun, dass MYSQL nicht die Fulltext-Indexe verwendet, sondern nur die Primary-Keys (das sind die über user_id liegenden Indexe, da user_id per auto_increment erzeugt wird), was zu sehr langen Suchzeiten führt. Kann es sein, dass fulltext nicht bei SELECT-Abfragen funzt, oder mache ich was falsch?

Eine Möglichkeit, die ich mir überlegt habe ist, ob es eine Möglichkeit gibt eine verknüpfte Tabelle aus den zu durchsuchenden zu erstellen, die bei Aktualisierung der "Basistabellen" sich autmaotisch mit aktualisert und ich diese so für meine Suche verwenden kann, in dem ich in der verknüpften Tabelle meinen Fulltext-Index erstelle. Ist so was möglich?

Wäre für Ratschläge, auch in andere Richtungen als meine Überlegungen sind, sehr dankbar!

Ach ja: Das ist meine Abfrage: SELECT m.user_id, m.berecht, v.branche1, v.branche2, v.branche3, v.mo_v1, v.mo_v2, v.mo_n1, v.mo_n2, v.di_v1, v.di_v2, v.di_n1, v.di_n2, v.mi_v1, v.mi_v2, v.mi_n1, v.mi_n2, v.do_v1, v.do_v2, v.do_n1, v.do_n2, v.fr_v1, v.fr_v2, v.fr_n1, v.fr_n2, v.sa_v1, v.sa_v2, v.sa_n1, v.sa_n2, v.so_v1, v.so_v2, v.so_n1, v.so_n2, m.firma, m.strasse, m.plz, m.ort, m.tel, m.email, m.homepage, MIN(w.start), MAX(w.end) FROM verzeichnis AS v INNER JOIN member AS m USING (user_id) LEFT JOIN werbung AS w ON m.user_id=w.user_id WHERE (m.plz = '64347' OR v.plzen LIKE '%alle%' OR v.plzen LIKE '%64347%' OR m.plz = '64343' OR v.plzen LIKE '%alle%' OR v.plzen LIKE '%64343%' OR m.plz = '64344' OR v.plzen LIKE '%alle%' OR v.plzen LIKE '%64344%' OR m.plz = '64345' OR v.plzen LIKE '%alle%' OR v.plzen LIKE '%64345%') AND (MATCH (m.firma,m.name,m.vorname,m.strasse) AGAINST ('+anwalt*' IN BOOLEAN MODE) OR MATCH (v.begriffe) AGAINST ('+anwalt*' IN BOOLEAN MODE)) GROUP BY m.user_id ORDER BY m.firma

Michael