注册

直接查询走索引,程序调用不走索引

如茨 2025/01/20 481 6

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8 非集群
【操作系统】:LINUX
【CPU】:
【问题描述】*:
(1)数据:2千万数据量,其中有三个单索引,VARCHAR类型【name】、Long类型【timestamp】、Varchar类型【parentId】,本次问题为【parentId】索引
(2)背景:生产环境线上运行一段时间后,会突然出现索引失效的情况,在此之前并无宕机、迁移、备份等操作;
(3)问题现象:同样sql使用IDEA连接达梦数据库,控制台查询约100ms;使用DM管理工具同样为100ms,但应用程序调用约30s
(4)sql:select * from myTable where parent_id in ('','',''),单条件查询,传入11个值,结果集约100条,示例parentId “12345-543-567-32”;
(5)实际应用代码 LambdaQueryWrapper.in(MyTble::getParentId,aList);
(6)并发情况:只有并发读,不存在并发改,凌晨会有批量插入和修改。白天查询频率较高,【name】和【parentId】频率基本一致,timestamp较少使用
(7)处理:先根据之前反馈得到的方案,更新统计信息(表、列、索引都有)后无任何变化,且共更新两次(中间间隔24小时),仍是直接查询走索引、程序调用不走索引;尝试更换传值,无变化;直接删除索引再用原句重建,有效
(8)疑问:为什么刷新统计信息不行,直接重建可以?底层具体是什么影响的?是否有其他处理方案?线上业务高峰时不可能直接删除索引,需要替代方案,因业务需求字段类型不能更改,索引数量不能减少,求各位大佬解答,谢谢!

回答 0
暂无回答
扫一扫
联系客服