tidb优化器选取索引有问题怎么办?

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:3.0
  • 【问题描述】: SQL : SELECT * FROM dispatch_task WHERE business_id=1 AND channel=0 AND state=3 AND round=0 ORDER BY weight desc,ctime asc LIMIT 0,20 INDEX :business_id,channel,round,state 发现一会走索引,一会不走索引扫全表。导致扫全表的慢查询要2s以上,用force index也不管用,优化统计信息也不管用。 有大佬知道怎么优化吗?数据量1000万,state=3的资源只有几百到上千。

尝试 show stats_healthy where table_name = ‘tb_name’ 以及 show stats_meta where table_name = 'tb_name '; ,如果 Healthy 值很低,modify_count 和 row_count 这两个值被频繁更新,统计信息可能过旧 ,手动搜集下统计信息再查询看下效果。