数据量小的时候差别不大, 数据量大了, 差别越来越大, 直到慢慢耗光你的硬件资源.
最近帮某个银行客户分析了两套oracle数据库, 客户反映说是系统慢, 迁移到了新的硬件平台,还是慢....如果我们把函数放到前面FST.TRANSDATE字段上,那样就不需要读610个分区,只需要读1个分区就行了,即把FST.TRANDATE = TO_CHAR (TO_DATE (SCD.LOAD_DATE...可能有人会问, FST.TRANDATE字段上使用了函数, 不会对其他的分区表有影响吗?...如果我们在SCD子查询内部的STATUS='0'后面也增加一个and LOAD_DATE= :B1 , 结果集等价,效果也是一样的, 就不用做前面那个改动了....这个SQL如果不改, 分区数再逐渐增加, 执行效率还会逐渐变差, 而改写之后的SQL, SQL的执行效率基本上就不会再有大的变化了,除非每天的数据量有很大改变.