analyze表评估不准确

【TiDB 版本】8.5.1
analyze后执行计划评估行数也不准确,目前有几张表每天会导出然后在import到日备份表里,导入完成后(数据无变化)进行analyze。目前发现有一张表(tf_b_writeofflog_d_after_mon0_day_XXX)虽然analyze了但是评估不准确,导致执行计划使用了broadcast分发,然后tiflash oom,手工再次analyze后正确。 目前看了23号 25号的表 都是同样的问题

手工analyze前:评估139万

手工analyze后:评估比较接近实际数量11亿

导入后的analyze, 使用包含大写的表名

手工的analyze,使用全小写

SQL使用的小写:

explain SELECT  COUNT(*) from   drecv.tf_b_writeofflog_d_after_mon0_day_24 d where d.WRITEOFF_ID not in ( 
    select w.WRITEOFF_ID  from drecv.tf_b_writeofflog_d_after_mon0_day_24  w ,drecv.TS_B_BILL_AFTER_MON0_day_24 b
    where w.BILL_ID =b.BILL_ID  and w.USER_ID =w.USER_ID  and w.ACCT_ID =b.ACCT_ID  and w.CYCLE_ID =b.CYCLE_ID 
    and w.INTEGRATE_ITEM_CODE =b.INTEGRATE_ITEM_CODE  and w.calc_cycle_id =b.calc_cycle_id  and  w.calc_cycle_id =202506
     ) ;


建议把这个参数设置成 all 试试。
第二次 analyze 的语句明显多了具体的列信息,估计是 mysql.column_stats_usage 记录了相关列的信息。

en,今天改了,明天观察下