比如下面这个SQL,这种写法就是极其糟糕的, 可就是这种低效标量子查询的写法,很多开发人员都愿意使用:
这个sql的改写比较简单,有兴趣的可以自己练练手....数据量小的时候差别不大, 数据量大了, 差别越来越大, 直到慢慢耗光你的硬件资源.
最近帮某个银行客户分析了两套oracle数据库, 客户反映说是系统慢, 迁移到了新的硬件平台,还是慢....如果我们在SCD子查询内部的STATUS='0'后面也增加一个and LOAD_DATE= :B1 , 结果集等价,效果也是一样的, 就不用做前面那个改动了....这种SQL写法导致的性能问题, 靠补强硬件是没有意义的, 而且一开始系统上线的时候影响还不太明显(分区数少), 随着时间的推移, 分区数越来越大, 效率就越来越差....性能优化, 从开发入手, 做SQL优化, 带来的收益才是最大的.