某个200万数据的表,进行分页查询的时候进行count统计总条数
执行一下 耗时42秒
即使 不加其他的连接, 就单纯的统计一下这个表的条数 就要7秒
但是业务sql执行却很快,都是同样的连接关系和条件
看了一下explain
a表由于是全表left join 居然没有走索引,直接查了250万数据
解决方案
建个辅助索引专门用来count
不要count(1) count一个短小的列 这个列上建个索引
能优化到可以接受的范围内。
另一个方案就是在第一次统计之后,将总条数返回给前端,翻页操作的时候由前端传回来,这样就不需要再去执行count语句。