mysql: Suche nach Zeilen mit mehreren Tags und derselben ID

Ich habe ein Problem damit, dass mysql Links findet, die zwei spezifische 'Tags' und den gleichen 'Hash' haben, wenn JOIN von zwei Tabellen ausgeführt wird

Angenommen, meine Tabellen sehen folgendermaßen aus:

Links

md5     url         title   numberofsaves
-----------------------------------------
a0a0    google.com  foo     200
b1b1    yahoo.com   yahoo   100

Stichworte

 md5    tag
 ---------------
 a0a0   awesome
 a0a0   useful
 a0a0   cool
 b1b1   useful
 b1b1   boring

Ich möchte Zeilen mit den Tags "nützlich" und "fantastisch" zurückgeben.

Die aktuelle (funktionierende / schnelle) Abfrage zum Suchen von Links nach 1 Tag:

SELECT links.title, links.numsaves FROM links LEFT JOIN tags ON links.md5=tags.md5 WHERE tags.tag = 'useful' ORDER BY links.numberofsaves DESC LIMIT 20

Nach dem Lesen einesArtikel Ich habe versucht, Folgendes zu verwenden:

SELECT links.title, links.numsaves FROM links LEFT JOIN tags ON links.md5=tags.md5 GROUP BY tags.md5 HAVING SUM(tags.tag='useful') AND SUM(tags.tag='awesome') ORDER BY links.numberofsaves DESC LIMIT 20

Diesetut arbeiten, aber es ist so unglaublich langsam, dass es unbrauchbar wird.

Kennt jemand die Lösung?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage