› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
iugo
V2EX  ›  MySQL

实时获取某用户的排名

  •  
  •   iugo ·
    iugo · Jul 28, 2015 · 3827 views
    This topic created in 4101 days ago, the information mentioned may be changed or developed.
    http://stackoverflow.com/questions/3333665/rank-function-in-mysql
    搜索得到比较通用的解决方法, 但性能未知.

    但以上解决方法有一个问题, 我想要得到某用户的排名, 不需要取出所有信息.

    在我有限的知识下, 解决方法就是非实时. 在某地将所有排名暂存起来, 然后隔一段时间刷新一下. 平常就直接都这个之前暂存的排名.

    如果要实时该如何做?

    设想是:
    首先 ORDER BY 排列, 一行一行进行匹配.
    设置一个临时变量 @user_rank = 0
    检查当前 user_id 是否是我们想要的, 如果不是, 则临时变量自增 1, 如果是, 则返回

    只返回一个值, 计算前几名的时候性能佳.

    但我不懂 MySQL, 不知道具体该怎么实现. 求教.
    5 replies  •  2016-03-01 14:54:53 +08:00
    bengol
        1
    bengol  
       Jul 28, 2015 via Android
    用redis
    Agromania
        2
    Agromania  
       Jul 28, 2015
    loveltyoic
        3
    loveltyoic  
       Jul 28, 2015
    2l + 1
    hdshen
        4
    hdshen  
       Jul 28, 2015
    Redis 有序队列

    score+ userId

    很方便
    wusuopuBUPT
        5
    wusuopuBUPT  
       Mar 1, 2016
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3200 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 13:48 · PVG 21:48 · LAX 06:48 · JFK 09:48
    ♥ Do have faith in what you're doing.