为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8.0
【操作系统】:linux
【CPU】:未知
【问题描述】*:
查询数据中包含1234’ 的数据,SELECT * FROM XXX where xxx == ‘1234’',其中查询内容中包含’的会有问题,如何解决
从第二个情况来看是添加c2条件后执行计划走的是c2列的索引
1.c2列过滤性如何
2.c2列索引统计信息是否准确
stat 100 on index 索引名
3.可以按照上面老师说的把c1列添加至c2列后
删除索引C2后,执行条件where c1 < ? and c1 > ? and c2 = 150; 速度加快,查看执行计划可见走了分区;
验证是否为普通索引C2导致,执行条件where c1 < ? and c1 > ? and c2 = 150 and c3 = ‘SSBB’ (c3也是原本存在的索引字段),结果出现了和之前一模一样的问题。删除索引c3索引后恢复正常。
这是属于bug还是索引使用不当?
分区表查询时,走分区裁剪功能性能会好很多.即看执行计划里分区表是FULL还是EQU扫描.大分区表上查询一定要带上分区键,避免全表扫描,优先建分区本地索引,或者不建索引.在调试案例SQL时,可以把索引全部设置成不可见,然后查询看耗时是否比之前快,执行计划是否合理,然后在有很好过虑列上建分区本地索引,进一步提升速度

INDEX_C2 这个索引把C1加到C2后面