调整SQL以获得更好的服务器响应时间

时间:2014-06-24 15:43:34

标签: mysql pagespeed server-response

我的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";

我想知道是否有人可以就我可以做的事情提出建议,以改善我的响应时间,并提高页面速度。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您应该在此查询上运行EXPLAIN PLAN。我猜这些随机操作迫使你扫描每一行。怎么会这样呢?

如果您看到TABLE SCAN,则必须重写查询以消除页面扫描。

索引是你的朋友。

我建议在JOIN中的所有行上创建一个VIEW。

7000条记录不是很多。我将对所有VIEW数据进行查询,并在服务器端提取随机样本。