Hallo!
Woran erkennst Du das?
Habe das mit EXPLAIN geprüft.
Die mit [pf] gekennzeichneten Stellen sind die performance-fresser ;-)). Bei einem LIKE "%text%" kann der Text irgendwo mitten im Feldinhalt stehen. Das kann kein Index abdecken. Versuche das zu vermeiden. Meistens geht das nur durch Überdenken der Datenbankstruktur. Wieso kann in v.plzen irgendwas vor und irgendwas nach "alle" stehen? Muss das so sein? Wieso kann in v.plzen irgendwas vor und irgendwas nach der PLZ stehen? Muss das so sein?
Danke, dass mit den Klammern ist eine gute Idee, die Suche über plz habe ich nun mal zum Testen weggelassen und folgende Abfrage durchgeführt: EXPLAIN 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 (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
Das Resultat war:
table type possible_keys key key_ len ref rows Extra
v ALL PRIMARY NULL NULL NULL 114187 Using temporary; Using filesort
m eq_ref PRIMARY PRIMARY 4 db657894.v.user_id 1 Using where
w ref user_id user_id 4 m.user_id 22
Wie gesagt, Primary sind nicht die Fulltext-Indexe. Der Fulltext-Index in member liegt über firma, name, vorname, strasse und der in verzeichnis über begriffe, also genau das was ich abfrage. Als ich mal nur in einer Tabelle abgefragt habe, wurde der Fulltext-index auch brav genommen.
Michael Spiller