日期:2014-05-16  浏览次数:20528 次

Oracle性能优化(一) 关注指标及复合索引原理设计

指标

对sql语句进行分析,需要关注的指标字至少包括以下几个:

1.消耗时间:包括Elapsed Time 、CPU Time等时间指标

2.内存消耗:包括Buffer Gets、Consistant Gets等指标

3.IO消耗:包括Physical Reads、Physical Writes等指标

4.语句分析次数:包括Parses、Hard Parses、Soft Parses等指标。

?

?


复合索引

???? 1.索引的前缀性

???????? 假设有如下表: create table AAA (a varchar2(32) ,b varchar2(32),c date);
???????? 在a和c列上建普通索引: create index iN_AAA_1 on AAA (a, c);
?? ? ? ? a.索引左前缀性的第一层意思:必须用到索引的第一个字段。select * from AAA where b=:xxx and c=sysdate;则不会用到索引,因为必须有a出现在where 语句中才会使用到该索引。
???????? b. 索引前缀性的第二层意思:对于索引的第一个字段,用like时左边必须是固定值,通配符只能出现在右边。select * from AAA where a like ”1%”;会用到索引;而select * from AAA where a like ”%1”;不会用到索引。
? ? ? ?? c.索引前缀性的第三层意思:如果在字段前加了函数,则索引会被抑制,例如:select * from aaa where trim(a)=1,则不会用到索引。

????? 2.skip scan index

???????? 当索引的第一个字段没有在语句中出现,oracle也会使用索引,这叫oracle的skip scan index功能。oracle发现索引的第一个字段值很少会将复合索引,根据第一个字段的值的个数,拆成多个复合索引。

????? 3.可选性

???????? 索引创建的顺序会影响查询,应尽量将值多的放在第一个。

?