84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
表结构包含id,week,hot,按周切成7张表,每张表代表一周的第几天,week代表第几周,怎么查询第n周hot排名前十的记录?
业精于勤,荒于嬉;行成于思,毁于随。
分表的分法,是要避免跨表操作。让业务的操作在一个表中完成。如果要跨表,说明分法是不合理的。
如果真的有些业务场景要跨表,考虑多种分法同时存在,做副本冗余。
根据week的来定位到具体的表,说白了就是生成sql语句的时候指定具体的表,和mysql没什么关系。
拼接sql语句问题,表命名要有规律,获取当前周,拼接,前10hot用order by和top 10或limit 0,10关键字完成
我个人是不喜欢把逻辑放到mysql中的,所以按照你的分表方法,只能从七张表中取出每个表的top10以后,在应用程序里面再比较了。另外,我建议你按照月份水平分表,这样能够支持更多的业务需求。你这种分表方式更像是取模分表,天然不支持时间段内查询与排序。
这种分表只能每张表都取前10,然后再代码里排序,这个分表规则有问题,有这种场景的要做数据冗余
分表的分法,是要避免跨表操作。让业务的操作在一个表中完成。
如果要跨表,说明分法是不合理的。
如果真的有些业务场景要跨表,考虑多种分法同时存在,做副本冗余。
根据week的来定位到具体的表,说白了就是生成sql语句的时候指定具体的表,和mysql没什么关系。
拼接sql语句问题,表命名要有规律,获取当前周,拼接,前10hot用order by和top 10或limit 0,10关键字完成
我个人是不喜欢把逻辑放到mysql中的,所以按照你的分表方法,只能从七张表中取出每个表的top10以后,在应用程序里面再比较了。另外,我建议你按照月份水平分表,这样能够支持更多的业务需求。你这种分表方式更像是取模分表,天然不支持时间段内查询与排序。
这种分表只能每张表都取前10,然后再代码里排序,这个分表规则有问题,有这种场景的要做数据冗余