抱歉,是否曾经有人问过这个问题,但是有什么办法,我可以优化此查询以使其运行得更快.每分钟大约需要2秒钟,虽然这不是一个很大的数目,但这是我网站上最慢的查询,而所有其他查询所用的时间少于0.5秒.
这是我的查询:
SELECT SQL_CALC_FOUND_ROWS MAX(images.id) AS maxID, celebrity.* FROM images
JOIN celebrity ON images.celeb_id = celebrity.id
GROUP BY images.celeb_id
ORDER BY maxID DESC
LIMIT 0,20
这里是一个解释:
1 SIMPLE celebrity ALL PRIMARY NULL NULL NULL 536 Using temporary; Using filesort
1 SIMPLE images ref celeb_id celeb_id 4 celeborama_ignite.celebrity.id 191
我不知如何进一步提高此查询的性能.我对MySQL不太熟悉,但是我确实知道它很慢,因为我正在对由MAX()创建的数据进行排序并且没有索引.我无法对此进行排序,因为它可以为我提供所需的结果,但是我还有其他方法可以防止它减慢查询速度吗?
谢谢.
解决方法:
如果您确实需要快速的解决方案-则不要在运行时执行此类查询.
只需在名人表中创建其他字段last_image_id并在上载新图像时对其进行更新(通过触发器或您的应用程序逻辑,无关紧要)
标签:max,mysql
来源: https://codeday.me/bug/20191202/2084755.html