Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

如何设计一个排行榜? PDF 下载


分享到:
时间:2023-02-19 13:16来源:http://www.java1234.com 作者:转载  侵权举报
如何设计一个排行榜? PDF 下载
失效链接处理
如何设计一个排行榜?  PDF 下载


本站整理下载:
提取码:bry0 
 
 
相关截图:
 
主要内容:

今天让我们从程序设计的⻆度,来看看如何设计⼀个排⾏榜!
我们先从最基础的实现⽅式来说起。
第⼀种要介绍的实现⽅式就是直接使⽤ MySQL 的 ORDER BY 关键字。 ORDER BY 关
键字可以对查询出来的数据按照指定的字段进⾏排序。
我相信但凡是学过 MySQL 的⼈,⼀定都⽤过 ORDER BY 关键字!没⽤过的,先不要看
下⾯的⽂章了,麻烦默默反思 3 分钟。
我之前在⼀个⽤户数据量不⼤(6w ⽤户左右)并且排序需求并不复杂的项⽬中使⽤的就
是这种⽅法。
这种⽅式的优缺点也⽐较明显。好处是⽐较简单,不需要引⼊额外的组件,成本⽐较低。
坏处就是每次⽣成排⾏榜都⽐较耗时,对数据库的性能消耗⾮常之⼤,数据量⼀⼤,业务
场景稍微复杂⼀点就顶不住了。
我们这⾥创建⼀个名为 cus_order 的表,来实际测试⼀下这种排序⽅式。为了测试⽅
便, cus_order 这张表只有 id 、 score 、 name 这 3 个字段。
我们定义⼀个简单的存储过程(PROCEDURE)来插⼊ 100w 测试数据。
存储过程定义完成之后,我们执⾏存储过程即可!
等待⼀会,100w 的测试数据就插⼊完成了!
为了能够对这 100w 数据按照 score 进⾏排序,我们需要执⾏下⾯的 SQL 语句。
为了能够查看这套 SQL 语句的执⾏时间,我们需要通过 show profiles 命令。
不过,请确保你的 profiling 是开启(on)的状态(可以通过 show variables 命
令查看)。
默认情况下, profiling 是关闭(off)的状态,你直接通过 set
@@profiling=1 命令即可开启。
然后,我们就查询到了具体的执⾏速度。
可以看到,⼀共耗时了接近 4 s。
如何优化呢? 加索引并且限制排序数据量 是⼀种⽐较常⻅的优化⽅式。
我们对 score 字段加索引,并限制只排序 score 排名前 500 的数据。
这个时候,我们再执⾏下⾯的 SQL 语句,速度就快了很多,只需要 0.01 秒就排序了前
500 名的数据。
当然了,这只是⼀个最简单的场景,实际项⽬中的复杂度要⽐我这⾥列举的例⼦复杂很
多,执⾏速度也会慢很多。
不过,能不⽤ MySQL 的 ORDER BY 关键字还是要看具体的业务场景。如果说你的项⽬
需要排序数据量⽐较⼩并且业务场景不复杂的话(⽐如你对你博客的所有⽂章按照阅读量
来排序),我觉得直接使⽤ MySQL 的 ORDER BY 关键字就可以了。

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐