constantin: Performance-Problem bei Website-Suche

Beitrag lesen

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?