连表查询后.多增加一个字段都会导致一个莫名的几千万数据扫描

两个SQL里面act表和ad表的JOIN方式不一样。第一个SQL(带limit 100那个)走的是IndexHashJoin,ad表使用了关联字段FbAccount上的索引index_FbAccount。第二个SQL走的是HashJoin,ad表走的是date_start字段上的索引date_start_2。看起来index_FbAccount这个索引的筛选能力很差,所以出现了estRows 很大的情况,可以给第一个SQL加个hint试试

/*+USE_INDEX(ad date_start_2)*/