我在一个有 300k 行的表上通过 DESC 对 INT 行进行排序,并选择 @rownum:=@rownum+1 来更新同一行的 RANK 字段。
它工作得很好,但需要很长时间。我可以接受更长的时间,但我可以让它休眠给 CPU 一些空闲空间来完成其他工作吗?
就像把 sleep(0.25 sec) 放在 while(1>0) 循环中......
更新: 设置@rownum=0;更新用户 u,(SELECT @rownum:=@rownum+1 作为 rank,id FROM user u order by score DESC)作为 bb SET u.rank=bb.rank WHERE u.id=bb.id