eliminiere die "LIKE '%...%'" und mache sowas niemals im Leben wieder. Beschäftige Dich mit MATCH AGAINST.
Danke cheatah,
ich habe jetzt mittels
CREATE FULLTEXT INDEX kw_full ON w_keyword (keyword)
eine Volltext-Index auf das Feld keyword gelegt und das LIKE in allen Suchabfragen durch MATCH AGAINST ersetzt.
Ergebnis ist eine (gefühlt) deutliche höhere Geschwindigkeit bei der UND-Abfrage und bei der NOT-Abfrage. Bei der Oder-Abfrage steigt er mir aber immer noch aus.
Hier die neue Syntax der Oder-Abfrage
SELECT
title,description,url,SUM(v.score) hscore
FROM
w_pages s,w_keyword t,w_occ v, (SELECT s.id FROM
w_pages s,w_keyword t,w_occ v
WHERE
MATCH(t.keyword) AGAINST('constantin') AND
v.word_id = t.keyword_id AND
s.id = v.page_id) a0
WHERE
v.word_id = t.keyword_id AND
s.id = v.page_id AND
MATCH(t.keyword) AGAINST('dorit') OR s.id = a0.id AND
s.typ = 'g'
AND
s.lang = 'd'
GROUP BY
url
ORDER BY
hscore DESC, url ASC
Limit 0, 100
Habe ich es so richtig gemacht? Lässt sich noch etwas schrauben, meinst Du?