gpt4 book ai didi

php - 为超过 350,000 名用户计算 "ranks"的有效方法

转载 作者:太空宇宙 更新时间:2023-11-03 12:36:15 28 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Mysql rank function

我正在制作一个排名网站,每个用户都会有一个基于级别的独特排名。 #1 是最好的排名,因为有 350,000 个用户,最差的排名将是 #350000。

任何用户都不能拥有与其他任何人相同的排名。现在,当添加新用户时,会计算他们的级别。计算完成后,脚本将“重建”排名,逐一检查每个用户,并计算他们的新排名。

这里是查询的解释:

  • "Id"为成员(member)在数据库中的ID
  • “RankNum”是他们的级别。它需要重命名。
  • “排名”是他们的唯一排名,#1 到 #350000。

这是我当前的脚本:

function RebuildRanks() {
$qD = mysql_query("SELECT `Id`,`RankNum` FROM `Members` ORDER BY `Rank` DESC, `Id` ASC");
$rowsD = mysql_num_rows($qD);

$curRank = 0;

for($x = 1; $x <= $rowsD; $x++) {
$rowD = mysql_fetch_array($qD);

$curRank++;
if($rowD['RankNum'] != $curRank) {
if($curRank != 0) {
mysql_query("UPDATE `Members` SET `RankNum`='$curRank' WHERE `Id`='".$rowD['Id']."'");
}
}
}

return true;
}

对于 350,000 名用户,这往往会运行得很慢。本质上,在数据库中,Rank(“ORDER BY `Rank` DESC”)是它们的级别,因此查询将对它们进行排序。不幸的是,其余的过程很慢。

以这种方式处理所有 350,000 个用户大约需要 97 秒。是否有任何可能的解决方案来更高效、更快速地运行它?

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com