ORACLE SQL Performance Tuning
1 序言...............................................................................................................................................................................................2
2 影响 SQL PERFORMANCE 的关键因素和配置:.................................................................................................................2
2.1 关于执行计划........................................................................................................................................................................2
2.2 ORACLE 优化器...................................................................................................................................................................2
2.2.1 ORACLE
优化器的优化方式
..........................................................................................................................................2
2.2.2
优化器的优化模式
(Optermizer Mode)...........................................................................................................................3
2.2.3 Optimizer mode
优化模式级别的设定:
.......................................................................................................................3
2.2.4
查看对象统计信息
(object statistics)..............................................................................................................................4
2.3 结合 BENQ ORACLE ERP.......................................................................................................................................................5
2.3.1
优化模式
(Optermizer Mode)...........................................................................................................................................5
2.3.2
关于
Gather.....................................................................................................................................................................5
2.4 跟踪 SQL 实际运行的 COST.................................................................................................................................................5
2.5 小结........................................................................................................................................................................................6
3 SQL 语句的 TUNING 经验分享:............................................................................................................................................7
3.1 绝大多数情况下 NOT EXISTS 比 NOT IN 效率高...................................................................................................................7
3.2 UNION ALL 效率比 UNION 高很多...................................................................................................................................7
3.3 一些很耗资源的 SQL 操作,在不必要的情况下不要使用...............................................................................................7
3.4 通常联接查询比子查询的效率要高很多............................................................................................................................8
3.5 用 TABLE 索引(INDEX)栏位去做 TABLE 间的关联,可避免费时的全表扫描..............................................................8
3.6 在 VIEW 中尽量不要使用 PACKAGE/FUNCTION 来得到栏位值,.......................................................................................9
3.7 通过 ROWID 访问表...........................................................................................................................................................10
3.8 必要时,可在 ORACLE STANDARD TABLE 上加索引.........................................................................................................10
3.9 合理排列 WHERE 子句中的连接顺序...........................................................................................................................10
3.10 用 WHERE 子句替换 HAVING 子句.................................................................................................................................10
3.11 关于使用索引(INDEX)的一些注意点..........................................................................................................................11
3.11.1 ‘!=’,NOT
操作将不使用索引
......................................................................................................................................11
3.11.2 ‘||’
是字符连接函数
.
就象其它函数那样
,
停用了索引
............................................................................................11
3.11.3
相同的索引列不能互相比较
,
这将会启用全表扫描
.................................................................................................11
3.11.4
避免在索引列上使用计算.
......................................................................................................................................12
3.11.5
基于成本的优化器
(CBO)
会对索引的选择性进行判断,来决定是否使用索引
...................................................12
3.11.6 Index
信息的重新统计
................................................................................................................................................12
3.12 识别 “低效运行”的 SQL 语句...........................................................................................................................................12