同一种sql类型走不同执行计划,很奇怪

第一个执行计划,对于tor表,你tor.customer_id、tor.account_id、tor.symbol三个字段过滤后优化器评估出记录数为218250.82条记录,但是实际执行竟然是0条!这也是导致了对于第二个执行计划中优化器错误的认为结果集比较多选择了利用tod表走聚簇索引主键id来避免排序,关联tor表能较快的返回结果,但实际上符合tor条件的表是不会达到100条记录的,因为符合条件的结果是0,所以最终请求了所有tod表数据,并索引关联tor表导致执行时间太久。

这里优化器根据统计信息评估的结果和实际严重不符,要么就是统计信息太旧,要么就是Count-Min Sketch hash碰撞太严重,要么就是多个字段的组合过滤因子评估存在问题。

建议先搜集统计信息,hint是最优选择。

1 个赞