【问题标题】:Get users current position the best way获取用户当前位置的最佳方式
【发布时间】:2023-04-10 21:29:01
【问题描述】:

我正在制作一个排名应用程序,并通过这种方式获得用户在排名中的位置:

$sql = "SELECT fk_player_id FROM ".$prefix."_publicpoints
            WHERE date BETWEEN '2013-01-01' AND '2013-12-31'
                GROUP BY fk_player_id
            HAVING SUM(points) > 235";

这是按原样工作的,但有一个失败。如果我的排名有 500.000 个用户,那么查询会变得非常繁重。然后它必须遍历所有得分高于 235 的用户。假设 235 给出的位置为# 345.879。那是很多行......我怎样才能以更好的方式做到这一点?至少当我调用数据库时?

希望提前 4 点帮助和感谢 :-)

【问题讨论】:

    标签: php mysql query-optimization


    【解决方案1】:

    3 种可能的解决方案,根据情况可能(或可能或可能不将它们组合在一起)

    • 为排名列添加索引
    • 仅在排名发生变化时预计算排名
    • 使用 cron 作业预先计算行列 - 是否迟到 10 分钟无关紧要。

    如果是通用排名页面,你可以使用模板引擎预渲染页面并缓存它

    您也可以使用更多内存或配置查询和临时表的缓存来优化您的 mysql 性能

    【讨论】:

      猜你喜欢
      • 2013-03-17
      • 1970-01-01
      • 2023-02-03
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      • 2023-03-03
      • 1970-01-01
      相关资源
      最近更新 更多