在Oracle创建索引的实际操作中会出现的限制条件

数据库 Oracle
在Oracle创建索引的实际操作中会有一些限制条件,以下的文章就是具体介绍哪些条件是Oracle创建索引的运用过程中是受限制的。

在Oracle创建索引的实际操作中有一些限制条件。就是说表或是列建立的相关索引并不是越多越好,而是相关索引建的越多,反而会影响到Oracle数据库在运行中的整体性能,所以,在建立索引的时候,仍然会有一些限制条件。

一是不要对一些记录内容比较少的表建立索引

在一个应用系统设计的时候,如设计一个ERP系统的数据库,其虽然有几千张表。但是,并不是每张表都有大量记录的。相反,其中有近一半左右的数据表,可能其存储的数据不会超过百条。如员工登陆帐户密码表、企业部门信息表等等。对于这些记录内容比较少的表,我们建立最好不要为其建立索引。无论是表上的,还是字段上,都不要Oracle建立索引。

二是若表中的内容比较大

但是,这个表基本上不怎么查询的时候,则只需要在表上建立索引即可;而不需要在字段上建立索引。如现在在ERP系统中,有一张表是“AD_Table”。其存储的是这个数据库中相关表的信息。这张表只有在数据库设计的时候才会用到。故这张表中的记录虽然比较多,但是由于用户用的比较少,所以,一般没有必要为这张表建立列级别上的索引。而直接用表索引来代替。

三是在一些NULL字段上

要根据实际情况来判断是否要建立索引。如现在有一张人事档案的表格,其上面有两个字段,分别为“身份证号码”与“地区”。有时会为了某个原因,企业需要所有员工都在系统中登记他们的身份证号码,以方便他们办工资卡、社会保险等等。所以人事管理可能需要经常的查询系统,看看有没有没有身份证号码的员工信息。

此时,就需要利用条件“IS NULL”来查询我们所需要的记录。故为了提高查询效率,若某个记录可能为空,并且经常需要以NULL为条件进行查询的时候,则最好给这个字段添加一个索引,并且最好建立位图索引。相反,若虽然可能会以NULL这个条件作为查询的限制语句,但是,用的不是很多的时候,则就没有必要为其建立索引。

建议三:多表连接查询的索引设计

如现在有一个人事管理系统。人事经理想知道员工的社保缴纳情况。他需要知道员工的姓名、职务、户籍性质(农民户口跟居民户口费用不一样)、缴纳的情况等等。但是,这些信息包含在不同的表中。因为为了提高Oracle数据库的性能,在表中存储的可能只是某些序号,而不是具体的内容。

如在社保表中,存储的是员工对应的编号,而不是员工的名字。所以,要得到这份报表的话,就可能需要关联员工基本信息表、公司组织结构表等表格,才能够查询到用户所需要的内容。为此,就需要利用Join语句,把这些表格关联起来。为了提高数据库的查询效率,这些用来关联的字段,最好能够建立索引。这可以显著的提高查询的速度。

建议四:在表的更新速度与查询速度之间寻求一个平衡点

众所周知,索引本身并不影响数据库的使用,其主要是为了提高Oracle数据库的查询效率。但是,由于当数据库的表中的数据更新的时候,包括记录的增加、删除、更改等等,都会对虽有的索引进行更新。

很明显,索引虽然可以提高查询速度。但是,也会对一些表的更新操作产生不良的影响。当在表中建立的索引越多,这个不利影响也会越大。故Oracle数据库管理员在设置索引的时候,还需要注意,在这两个之间需要一个均衡点。

按照一般的理论来说,当某个表多数用来查询、更新相对来说比较上的话,则要多多采用索引。相反,当某个表记录更新居主导,查询相对来说比较少的话,则不要建立太多的索引,避免对更新的速度差生不利影响。在实际工作中,若某个表频繁的被视图所调用的话,则最好就好设置比较多的索引了。

 

 【编辑推荐】

  1. Oracle clob实际相关代码的解析
  2. Oracle数据库“总头”收购Java运用中的难题
  3. Oracle Date格式的实际应用
  4. Oracle 8i更新相关类型中出现乱码问题的解决
  5. Oracle Java虚拟机 JRockit 集成的实际应用
责任编辑:佚名 来源: 博客园
相关推荐

2010-04-20 11:06:33

Oracle索引

2010-04-15 14:30:35

Oracle创建

2010-04-13 18:03:33

Oracle服务

2010-06-04 16:12:39

MYSQL_ASSOC

2010-04-01 14:06:13

Oracle Name

2010-05-10 10:19:28

Oracle实战RMA

2010-04-01 13:39:43

Oracle Name

2010-03-31 16:11:00

Oracle启动

2010-04-16 13:59:40

Oracle数据

2010-04-14 17:06:41

Oracle安装路径

2010-07-07 11:03:21

SQL Server索

2010-04-07 13:02:14

Oracle 存储过程

2010-04-12 14:44:06

Oracle Impd

2010-03-29 15:57:07

Oracle exp备

2010-04-02 13:34:33

Oracle DBA

2010-04-14 09:33:58

Oracle Spat

2010-04-02 15:53:36

Oracle绑定变量

2010-04-06 08:58:27

Oracle job

2010-04-01 16:06:08

Oracle修改表ow

2010-05-27 16:12:10

MySQL索引
点赞
收藏

51CTO技术栈公众号