我的SQL脚本扫描~7,000条记录并随机检索其中的100条记录,同时从另一个表中提取相关数据(通过SQL JOIN)。使用此代码(> 7秒),我的服务器响应时间非常慢。
ROUND(AVG(r.rank),0) AS avrank,
COUNT(r.rank) AS countrank
FROM stories s
LEFT JOIN ratings
AS r
ON r.storyidr = s.id
GROUP BY s.id
ORDER BY RAND()
LIMIT 100";
我想知道是否有人可以就我可以做的事情提出建议,以改善我的响应时间,并提高页面速度。提前谢谢。
答案 0 :(得分:1)
您应该在此查询上运行EXPLAIN PLAN。我猜这些随机操作迫使你扫描每一行。怎么会这样呢?
如果您看到TABLE SCAN,则必须重写查询以消除页面扫描。
索引是你的朋友。
我建议在JOIN中的所有行上创建一个VIEW。
7000条记录不是很多。我将对所有VIEW数据进行查询,并在服务器端提取随机样本。