我正在我的应用程序中实现一个排行榜,我想每隔几次更新一次。为此,我创建了两张排行榜,每张都如下所示:
user_id, score, rank
这是我的更新查询:
select score from leaderboard order by score for update;
select(@rankCounter := 0);
update leaderboard set rank = (select(@rankCounter := @rankCounter + 1)) order by score desc;
我正在使用我的活动表进行查询,并且每隔几次我切换一次活动表。
更新目前大约需要 3 分钟(在我的机器上)来更新 4M 原始数据。我希望减少它占用的 CPU 量,我不在乎更新会花费更长的时间。
我怎样才能做到这一点?