我真的需要你的帮助。我在大学里从事一项工作,在来这里之前,我从mysql的文档中阅读了很多内容,进行了搜索和搜索,但是这些都没有帮助我进行sql查询。看我有这个查询:

SELECT a.nome, COUNT(*)
FROM publ p JOIN auth a on p.pubid = a.pubid
WHERE p.pubid IN (SELECT pubid
FROM auth
GROUP BY pubid
HAVING COUNT(*) < 3) // THIS VALUE 3 here I have to do with value 2, 4 and 5
GROUP BY a.nome      // in different querys.
ORDER BY COUNT(*) DESC, a.nome ASC


我试图将索引放在where子句中,但是我没有得到结果,并且花了很长时间。我该怎么做才能增加查询数量,使结果更快?感谢您的帮助

最佳答案

我将创建这些索引并对查询重新排序

CREATE INDEX publ_pubid ON publ(pubid);
CREATE INDEX auth_pubid ON auth(pubid, nome);

SELECT a.nome, COUNT(*)
FROM (
   SELECT pubid
   FROM auth
   GROUP BY pubid
   HAVING COUNT(*) < 3
) L
LEFT JOIN publ p on L.pubid=publ.pubid
JOIN auth a on p.pubid = a.pubid
GROUP BY a.nome
ORDER BY COUNT(*) DESC, a.nome ASC;

关于mysql - 如何优化mysql查询带来的大量行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47041568/

10-11 17:27