【问题标题】:Tuning SQL for better server repsonse time调整 SQL 以获得更好的服务器响应时间
【发布时间】:2014-08-14 23:18:03
【问题描述】:

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

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

【问题讨论】:

    标签: mysql pagespeed server-response


    【解决方案1】:

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

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

    索引是你的朋友。

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

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

    【讨论】:

    • 谢谢@duffymo,这是一个很好的起点。对如何设置索引来处理随机函数感到困惑。也许在两个表之间的关系?
    • 我不认为索引是去这里的方式。我会查询中间层的值并在那里随机选择。
    猜你喜欢
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多