tidb limit 慢

大佬们好:
我是tidb 小白一个,刚刚接手tidb,遇到下面的问题,希望给点思路一起解决下,非常感谢:pray:

背景:
业务反馈下面这条sql 有点慢不可接受,准备换回mysql,说在mysql 中类似的比这个表大的执行起来还挺快,我想这咋行,因为一条sql 不用tidb,no no no,这条sql 慢的时候执行大约2s,有时候运行几次还是挺快的几十ms

1.表结构如下,没主键,据说自增id 对tidb 不太友好
image
2.sql执行计划如下
explain analyze SELECT * FROM apk_snap_history ORDER BY add_time desc LIMIT 10 OFFSET 0;


3.表索引情况
image
我看主要时间消耗在index loop 中的ResolveLock,然后看 Concurrency:OFF 不知道并行没用上有没有影响,还请大佬们帮分析下~

1赞

你用的什么版本?
如果是4.X 或者 5.X 可以用自增主键的,有主键和没主键差很多的

https://docs.pingcap.com/zh/tidb/v4.0/tidb-best-practices#二级索引

这是索引部分的表达,可以参考下

然后我建议你主要看这个:

十四、分页的最佳实践

如果在字段或者设计层面有缺的,或者不完善的地方,最好补齐

你说的Mysql 和tidb 比较的情况狠常见,如果Mysql 的单表数据大于 1000W 的时候,业务增长越来越大的情况下,查询会越来越慢,但是tidb 是一个稳定的

1赞

tidb 版本是5.7.25-TiDB-v4.0.8

  1. 做一下 analyze
  2. count 查看一下这个表有多大。
    如果表很大的话,那么这样一个全表查询查询两秒应该不是很高。