84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
表结构包含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,然后再代码里排序,这个分表规则有问题,有这种场景的要做数据冗余