为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: v8
【操作系统】:win
【CPU】: inter
【问题描述】*:
当前有一个单表,大概30多个字段,目前数据量是85w。使用频率最高的查询逻辑,经过测试加了个一个 commonFilter 的索引,查询速度由原来2.5s变为200ms。但是,关于这个表的还有其他两个维度查询的sql,现在综合查询速度是3s左右,现在要对这个sql进行优化,经过相关ai建议与各种测试,建了一个checkFilter的索引,查询速度变为0.2s左右。以上为背景
问题现象是,建立了checkFilter 的索引后,使用common索引的查询sql被影响,查询由原来100多变成9s,但是,当这个sql 一比一copy出来到dm客户端执行的时候,还是100多毫秒。
索引页重建过,java服务页重启了。dm客户端执行还是200ms左右,但是程序查询就是9s,删掉check索引后,程序查询恢复正常。
问题是什么? 为什么dm客户端查询有区别呢? 是底层设计上有什么差异吗?
上周有个用户碰到和您相同的问题,解决方法:
1、使用manager工具登录数据库,更新统计信息;
2、清空下执行计划缓存然后提交;
更新下这个索引的统计信息,重新看下:
DBMS_STATS.GATHER_INDEX_STATS('OWNNAME','INDEXNAME');
替换对应的模式名和索引名