大批量数据分页查询非常慢

  • 【TiDB 版本】:3.0
  • 【问题描述】:7000w数据量进行分页查询超级慢

1、查询条件:时间排序 send_date

2、数据自增序列会出现以下对应情况

image

image

数据从MongoDB中进行迁移至TiDB,采用异步程序导入,中间也想过自增唯一键作为游标,但是因为因为异步导入也会从出现上面第二种情况

自增唯一键>(pageNum-1) * pageSize

使用 大数据分页查询 会越来越慢,如何调优? 里面的方法(cursor_num>(pageNum-1)* pageSize)就不再适用,使用limit m,n,m小的时候还能接受如果出现上万查询时间超级长,这种情况需要怎么解决吗?

正是因为数据量越来越大,才考虑数据从MongoDB中迁移至TiDB进行优化

  1. 可以参考下这个案例https://asktug.com/t/tidb/1973 调大分页? 2. id desc排序应该会有影响,能否尝试不要使用desc,默认升序,测试一下 ?

这个分页并不能进行数量加大,现在是数据已经从MongoDB中全部导入至TiDB中,然后用户需要根据时间查询一些数据,目前分页就是每页十条信息,而且都是按照时间进行降序排列如果把Id desc去掉就需要用send_date desc排序

从你给出的查询来看,有几百万的数据,从tikv读取到tidb,还要再做desc排序,再去截取10行展示, 如果有几百万的数据还要分页展示,并且不是前多少行,从中间截取。 这等于要展示至少70万页,这个业务是不是应该可以调整一下?

现在的业务就是这样

这还只是一个用户的数据

这个我觉得,你还是在业务侧优化下,可以考虑使用报表,或者缩短查询时间范围。 应该不会有人会每10条数据,看7万多页吧… 优化的方法,由于不能加大每页的行数,也不能取消desc,觉得考虑从业务上可能更合适些,多谢

嗯 好的 麻烦了

不客气,抱歉,没有太帮上忙