在对两个表进行 JOIN 时,我在计算 mysql 以查找具有两个特定“标签”和相同“hashid”的链接时遇到问题
假设我的表格如下所示:
链接
md5 url title numberofsaves
-----------------------------------------
a0a0 google.com foo 200
b1b1 yahoo.com yahoo 100
标签
md5 tag
---------------
a0a0 awesome
a0a0 useful
a0a0 cool
b1b1 useful
b1b1 boring
我想返回具有“有用”和“真棒”标签的行
通过 1 个标签查找链接的当前(工作/快速)查询:
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
阅读一篇文章后,我尝试使用以下内容:
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
这确实有效,但速度慢得令人难以置信,以至于无法使用。
有人知道解决方案吗?