排行榜之Mysql OrderBy实现
1、排行榜系统的功能点
2、排行榜系统基本功能要素

MySQL实现方案
数据量较小,业务场景比较简单。可直接使用
-
新建表
CREATE TABLE leaderboard( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键id', `name` VARCHAR(50)NOT NULL COMMENT'玩家名称', score INT NOT NULL COMMENT '分数', PRIMARY KEY (id )) COMMENT'排行榜'; -
增加信息
INSERT INTO leaderboard(name, score) VALUES ('p1', 1), ('p2',2), ('p3',3), ('p4',4), ('p5',5), ('p6' ,6), ('p7',7), ('p8', 8), ('p9',9), ('p10', 10), ('pl1' ,11), ('p12' ,12); -
查询排行榜
SELECT name, score FROM leaderboard ORDER BY score DESC LIMIT 10; -
清除过期信息
DELETE FROM leaderboard WHERE id=12 LIMIT 1; -
更新排行分数
UPDATE leaderboard SET score = 11 WHERE id=1 LIMIT 1;
千百万级别数据压测
创造数据
DELIMITER//
CREATE PROCEDURE InsertData()
BEGIN
DECLARE counter INT DEFAULT 1;
DECLARE nameValue VARCHAR(50);
DECLARE scoreValue INT;
WHILE counter<= 1000000 DO
SET nameValue = CONCAT('p', counter);
SET scoreValue = counter;
INSERT INTO leaderboard (name, score)VALUES (nameValue, scoreValue);
SET counter =counter +1;
END WHILE;
END//
DELIMITER;
call InsertData();
执行sql创建insertData函数。然后 执行此函数。创建数据。
直接查询 使用秒数 1.157s

添加索引
ALTER TABLE leaderboard ADD INDEX idx_score(score);
重新查询使用 1.07s 速度快了一点,是有效果的。








![[Algorithm][动态规划][简单多状态DP问题][按摩师][打家劫舍Ⅱ][删除并获得点数][粉刷房子]详细讲解](https://img-blog.csdnimg.cn/direct/8a6fa54fc36e41d0b0427a79e1c28071.png)











