数据库分库分表分页查询(2)
1.每个总表查询1000条数据
100个分表查询,每个分表查询10条数据,进行数据合并后排序取时间戳
每次分页最多在10页范围内,跳转
select * from where create_time >上次的10条数据的最大时间 order id desc limit 0,10
解决办法:
一般都放弃使用它自身的这种排序或者分页,使用nosql工具如 MongoDB,es,solr等创建二级索引。
比如我们利用es,把我们常用的搜索条件和排序字段都索引进去,这样我们先查询es,然后返回id(分表策略选取的id),然后再拿这个id去各个表中查询,性能也完全没有问题。如果该id在各个表中刚好是主键,那性能会非常快,因为主键不但是唯一索引,更因为是聚簇索引,聚簇索引上面存的是该列数据。
关于MongoDB,es的使用和优化后面会讲到,MySQL的索引优化及索引使用也会讲到