我爱编程

Oracle非标准的日期格式的日期格式导致分区裁剪特性无效

2018-02-23  本文已影响28人  每天学点编程

请关注我的微信公众号

个人微信公众号

技术交流群 (仅作技术交流):642646237

​请关注我的头条号:

结论

非标准的SQL引起优化器判断异常,将其修改成标准写法后,SQL恢复正常。

问题

这个SQL中涉及的表是一个分区表,该SQL扫描了所有分区,分区裁剪特性没有起效。

解决方法

尝试通过引入union all来分解查询,以便于优化器做出更准确的判断。采用这个方法后,确实起效了,当然不可避免会扫描两遍表。


通过调整日期FORMAT格式,优化器很精准地判断了分区,整体SQL性能得到了很大的提高。

分析结论

对于非标准的日期格式,Oracle在复杂逻辑判断的情况下分区裁剪特性无法识别,不起作用。这种情况下,会走全表扫描,结果是正确的,但是执行效率会很低。

通过使用union all,简化了条件判断。使得Oracle在非保准日期格式下也能使用分区裁剪特性,但最佳修改方式还是规范SQL的写法。

上一篇 下一篇

猜你喜欢

热点阅读