mysql: búsqueda de filas que tienen varias etiquetas y la misma ID

Tengo un problema al calcular el mysql para encontrar enlaces que tengan dos 'etiquetas' específicas y el mismo 'hashid' al hacer una ÚNICA de dos tablas

Supongamos que mis tablas se ven así:

Campo de golf

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

Etiquetas

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

Quiero devolver las filas que tienen etiquetas de AMBOS 'útiles' e 'impresionantes'

La consulta actual (en funcionamiento / rápida) para encontrar enlaces por 1 etiqueta:

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

Después de leer unartículo Intenté usar lo siguiente:

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

Estahace funciona pero es increíblemente lento para ser inutilizable.

Alguien sabe la solución?

Respuestas a la pregunta(1)

Su respuesta a la pregunta