当前位置:首页 > 开发 > 数据库 > 正文

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

发表于: 2011-09-03   作者:chyx72   来源:转载   浏览次数:
摘要: 转: http://database.51cto.com/art/201003/191868.htm 在Oracle创建索引的实际操作中有一些限制条件。就是说表或是列建立的相关索引并不是越多越好,而是相关索引建的越多,反而会影响到Oracle数据库在运行中的整体性能,所以,在建立索引的时候,仍然会有一些限制条件。 一是不要对一些记录内容比较少的表建立索引 在一个应用系统设计的时候
转: http://database.51cto.com/art/201003/191868.htm
在Oracle创建索引的实际操作中有一些限制条件。就是说表或是列建立的相关索引并不是越多越好,而是相关索引建的越多,反而会影响到Oracle数据库在运行中的整体性能,所以,在建立索引的时候,仍然会有一些限制条件。

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

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

二是若表中的内容比较大

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

三是在一些NULL字段上

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

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

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

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

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

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

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

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

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

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

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
转帖:http://hittyt.iteye.com/blog/1885141 无过滤条件的LEFT JOIN SQL中最简单形式的LEFT JOIN,
无过滤条件的LEFT JOIN SQL中最简单形式的LEFT JOIN,是直接根据关联字段,以左表为基准,对右表进
用powerdesigner为数据库表创建索引是非常方便的,操作其实也非常简便,但问题是powerdesigner一段
以前没接触过job,job其实用起来比较简单,但也有一些容易犯错的地方,这里跟小伙伴们分享一下。 Orac
http://www.cnblogs.com/tuyile006/archive/2007/05/08/738651.html 数据库在通过连接两张或多张表来
Sql Server 2005 在备份还原后经常出现数据库“受限制用户”的问题, 可以通过设置数据库属性-》选
一.索引介绍 1.1 索引的创建语法: CREATE UNIUQE | BITMAP INDEX <schema>.<index_name&
在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。索引的作
在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。索引的作
1. 索引简介 索引特点 : 第一、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号