0

我的 SQL 脚本扫描约 7000 条记录并随机检索其中 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";

我想知道是否有人可以就我可以做些什么来改善我的响应时间并提高页面速度提出建议。先感谢您。

4

1 回答 1

1

您应该对此查询运行 EXPLAIN PLAN。我猜所有这些随机操作都会迫使您扫描每一行。不然怎么可能?

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

索引是你的朋友。

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

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

于 2014-06-24T15:47:03.663 回答