Oracle的SQL性能优化 (七)优化也有补丁

哪些情况下不好优化,例如总是读取全部或大多数数据。如果是因为数据分布不好,或者查询条件没有用到索引(因为不可能对每个字段加索引),建议改变一下表结构,例如加入冗余字段等方法。如果可以SQL语句是用于分页显示,可以用ROWNUM只读取部分数据来提高速度。如果是统计,可以利用MaterializedView保存查询结果,再从MV中读取数据,缺点是MV的数据不是最新的数据,当然也可以用缓存。

在SELECT部分中的子查询有时难以优化,因为执行计划中不一定包括它。可以将子查询变为普通连接后优化,之后再恢复成子查询模式。

 

最后,SQL调优时一般都在开发库上进行,部署到测试库或者正式库上时性能可能不好,这主要与数据量多少有关,其次是数据的分布,所以一开始开发库、测试库的数据要尽可能模拟正式库,调优完成时要尽可能早地在正式库上验证SQL的性能。同样地理由,用本文的表结构、例句,你不一定能得到与本文相同的解释计划、执行计划,特别是没有hint的情况下。

 

建议参考:《Oracle性能诊断艺术》http://www.dbanotes.net/top.html

posted @ 2010-06-13 20:49  保尔二世  阅读(126)  评论(0)    收藏  举报