mysql: encontrando linhas que possuem várias tags e o mesmo id

Eu estou tendo um problema de descobrir o mysql para encontrar links que têm duas 'tags' específicas e o mesmo 'hashid' ao fazer um JOIN de duas tabelas

Suponha que minhas tabelas sejam assim:

Links

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

Tag

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

Quero retornar linhas com tags de "útil" e "incrível"

A consulta atual (trabalhando / rápida) para encontrar links por 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

Depois de ler umartigo Eu tentei usar o seguinte:

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

estefaz trabalho, mas é tão inacreditavelmente lento a ponto de ficar inutilizável.

Alguém sabe a solução?

questionAnswers(1)

yourAnswerToTheQuestion