两个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)*/