【问题标题】:maintaining an ordered collection in MySQL在 MySQL 中维护有序集合
【发布时间】:2014-06-11 04:08:17
【问题描述】:

我的要求是创建一个结构如下的表

(user_id, score, rank)

user_id 是一个整数标识符(也是主键)。

score 也是代表用户得分的整数值。

rank 是得分 > 当前用户得分的用户数。

必须通过插入另一个表来调节该表的条目。 每当该表中出现与 user_id 对应的条目时, 我表中的 score 变量需要加一并为每个 user_id 重新计算排名。

现在的问题是排名更新非常昂贵,因为我需要将每个用户的分数与其他每个用户进行比较。

有没有一种方法可以创建一个有序表,其中记录根据分数进行排序,并且每当发生分数更新时,该行向上或向下移动?

底层数据库是 MySQL。实现这一点的最佳方法是什么?性能是这里最受关注的问题,分数变化非常频繁。

【问题讨论】:

    标签: mysql database


    【解决方案1】:

    将属性AUTO_INCREMENT 添加到列userid,它会在插入时自动完成。 则无需在INSERT 查询中提供 userid 值

    【讨论】:

    • @hasan,实际上 user_id 是我另一个表的外键。每当该表中的条目发生时,该表中特定 user_id 的分数都会更新
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 2011-04-11
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多