很多数据库会随着时间的增长越来越慢, 今天通过一个小案例说明一下. 文章结尾可能有你需要的东西....业务上线一段时间后:
随着系统运行时间的增长, T1表增长到了 100w(表名T1m)条记录,执行效率也接近10倍的下降,靠着强大的磁盘性能, 执行时间也只需要0.19秒, 仍在可以忍受范围:
业务上线较长时间...数据库的优化器会把一些常见的SQL写法在内部做一些查询转换,这就考验数据库的核心算法了. 上面这个SQL的写法 , 强大如oracle数据库也没能拿出一个让人满意的执行计划....我的优化方法是: 把原SQL的exists子查询改成内连接....hint调整执行计划:
任何数据库的优化器都不是完美的, oracle提供的hint是对优化器不足的一个弥补, 这个技能也是必备的.特别是生产系统可以在不改SQL代码的情况下解决性能问题.