大数据量实时统计排序分页查询 (并发数较小时) 的瓶颈不是函数(count,sum等)执行,
不是having, 也不是order by,甚至不是表join, 导致慢的原因就在于“数据量太大本身”
- 化整为零
就是将表划分为M份相互独立的部分,可以是分表,也可以是不分表但冗余一个取模结果字段
实际结果是不分表比分表更加灵活,只需稍加配置,就可以动态切分大表,随意更改M的大小。
将1条慢sql(大于30秒)拆分成为N条查询速度巨快的sql(单条sql执行时间控制在20毫秒以内)
然后再web应用中以适当的线程数去并发查询这些执行时间快的N条小sql再汇总结果
- 两步查询
第一步查询中去并发执行这N条小sql, 只取排序字段和标识字段,其他字段一律丢弃
汇总结果后定位出当前页面要显示的pageNum条数据,再进行第二步查询,取出页面上需要展示的所有字段