by问题
count (*)问题
SQL方面的解决方案
成本低,不用引入中间件,不用增加新表操作简单
SQL改写(精度准确,性能低)
该业务一般最常见的方式是对每个库中的每个表执行如下sql语句
select...,排序后为2,3,3,4,4,5, 可以看到无论何种取法都不会与我们期望的结果2,2,3一样,因此这种方法会导致数据精度不准,那么我们为了解决该问题,该如何修改呢,答案是扩大搜索范围,再将数据合并进行处理...select * from order order by time limit x + y;
可以看到将limit的查询条件进行修改后,查询到数据更过,我们从表一表二查询到的结果汇总结果为,1,3,4,5,2,2,3,4...,那么表一的结果为2,2,2,2,表二的结果为3,4,5,6,汇总数据再排序则为2,2,2,2,3,4,5,6,而实际结果应该为1,2,2,2 可以看到精度仍然存在问题,但性能比较上述方案有所提升
二次查询...timeMin的数据,也就是再对每个非timeMin分片执行以下语句
select * from order where time between timeMin and time[i];
可能直接看文字有点难以理解