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