【标题】in 大量参数时查询性能慢

【关键字】in 大量参数 FAST FULL SCAN INDEX RANGE SCAN

【问题描述】测试表数据量 200w,表结构如图,且在 PHONE 字段上创建了索引
图片.png
测试 SQL 为:

select name,sum(id) from test1119 where phone in (...) group by name;
且in中的参数大于300个

该 SQL 直接运行时间:
图片.png
【问题原因分析】

通过 explain 可以看到执行计划走了 FFS,但是当前 in 大量参数的场景下走 INDEX FAST FULL SCAN 的性能低于走 INDEX RANGE SCAN。

【解决/规避方法】

1、重新收集统计信息,检查收集统计信息后能否自动走上 INDEX RANGE SCAN

2、如果仍然没有走上 INDEX RANGE SCAN,则使用 hint,修改 SQL 为:
图片.png
图片.png
走 range scan 的时间:毫秒级
图片.png
【影响范围】23.2.8.100 之前的所有版本

【修复版本】-


qiaoyikefu
1 声望0 粉丝