oracle11 创建索引语句,分析索引,创建索引

oracle是一个庞大的知识体系,各个知识点之间存在着错综复杂的立体网状关系,孤立的引用某个

论点四处应用,南辕北辙的结果恐怕往往会伴随在你左右。同时,Oracle版本众多,同一个知识点在不同的版本里常有一些应用上的

区别,这也是需要引起足够重视的。

建立索引

分析索引

虽然cost-base优化技术帮助了避免在查询中使用不被选中(nonselective)的索引,但是SQL引擎必然一直对表的所有索引进行维护,而不管这个索引是否被使用。在定操作很多的应用中,索引的维护会消耗非常巨大的CPU和I/O资源(resourse),换句话说,请不要建立不必要的索引。

为了最优性能,删除(drop)所有不被使用的索引。你可以通过使用“ALTER INDEX MONITORING USAGE”这个监控功能一段时间,以观察索引的使用情况。这个监控功能记录了一个索引是否被使用。注意选择合适的工作量负载去监控(Be careful to select a representative workload to monitor)。

Indexes within an application sometimes have uses that are not immediately apparent from a survey of statement execution plans. An example of this is a foreign key index on a parent table, which prevents share locks from being taken out on a child table.

你可以通过“EXPLAIN PLAN”语句去判断你将要建立的索引是否会被你的应用用上。

有一点要注意:当你在调整一个语句的性能是可能会影响到其他的语句。举个例子,你建立了一个索引给一语句使用,同时,oracle优化器也可能让其他的语句来使用这个索引。从这一点上来说,在你调整了这些语句后,最好重新检查这些语句的性能。

注:

你可以通过“Oracle Index TuningWizard”去检测一个表的索引的使用效率。类示的功能还存在于“Virtual Index Advisor”和“Oracle Expert”。

优化索引

维护索引

索引管理指导(guidelines):

1. 插入数据后,再建索引;

2. 如果你频繁的想去检索一张大表(retrieve)15%以下的行的话,那么就建立索引;

3. 为了提高联合查询的速度,往往有必要把联合用到的字段建立索引;

4. 小表没必要建立索引

5. 有必要建立索引的字段往往具有如下一个或者多个的特征:

a. 字段的值比较具有唯一性

b. 具有比较广的值域(wide range of values),适合建立普通(regular)索引

c. 具有比较窄的值域(small range of values),适合建立位图(bitmap)索引

d. 一个字段具有较多的null值,但是,查询语句往往只查具有值的行

6. 具有如下特征的行不合适建立索引:

a. 字段值中有很多null,同时,又不去检索那些非null值

b. long, long raw字段

7. 在CREATE INDEX语句中,几个字段[注:被建立复合索引的字段]之间的先后关系会影响查询的性能。

一般情况下,把最常用的字段放在[复合索引位置中]最前面。举例说明:如果一个索引由三个字段组成:

col1, col2, col3,那么,如果仅查询col1或者col1+col2,那么,这两都的查询速度都会加快,而那些

只查询col2、col2或者col2+col3的语句将不会用到这个索引

8. 索引并不是越多越好,要注意表检索和表更新之间的性能衡

9. 指明索引的区块空间使用(Specify Index Block Space Use):

如果你计划往被索引的表里插很多数据,那么,PCTFREE值应该比较大;而如果被索引的表的数据相对变

化较小,那么,PCTFREE可以小一点[个人建议,如果表数据总是存在比较大的变动,那么,每次变动后,

重建索引更合适]

10. 估计索引的大小,并设置[合理的]存储参数

11. 为索引指定表空间:

表和索引建立在不同的表空间有利于性能[如果只有一个物理磁盘的话,意义不大]

12. 建立索引时考虑采用并行技术(Consider Parallelizing Index Creation)

并行建立一个索引时,存储参数被每个[并行的]查询服务进程(query sever process)单独使用,因此,

一个采用12个并行,INITIAL参数为5M的索引建立过程至少要用掉60M的存储[空间]

13. 建立索引时考虑使用“NOLOGGING”[参数],[这能带来不少的好处][@more@]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值