在Oracle创建索引的实际操作中会出现的限制条件 (在Oracle数据库中,创建存储过程时使用的语言是?)

教程大全 2025-07-21 06:33:28 浏览

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

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

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

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

二是若表中的内容比较大

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

三是在一些NULL字段上

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

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

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

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

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

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

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

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

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

【编辑推荐】


sql-2000中的索引是什么意思?

可以利用索引快速访问数据库表中的特定信息。 索引是对数据库表中一个或多个列(例如,employee 表的姓氏 (lname) 列)的值进行排序的结构。 如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。 索引提供指针以指向存储在表中指定列的数据值,然后根据指定的排序次序排列这些指针。 数据库使用索引的方式与使用书的目录很相似:通过搜索索引找到特定的值,然后跟随指针到达包含该值的行。 在数据库关系图中,可以为选定的表创建、编辑或删除索引/键属性页中的每个索引类型。 当保存附加在此索引上的表或包含此表的数据库关系图时,索引同时被保存。 有关详细信息,请参见创建索引。 通常情况下,只有当经常查询索引列中的数据时,才需要在表上创建索引。 索引将占用磁盘空间,并且降低添加、删除和更新行的速度。 不过在多数情况下,索引所带来的数据检索速度的优势大大超过它的不足之处。 然而,如果应用程序非常频繁地更新数据,或磁盘空间有限,那么最好限制索引的数量。 1.确定数据表的操作是大量的查询还是大量的增删操作,以此确定使用索引的数目,较多增删操作应严格限制索引数目,如果是较多查询可以适当增加索引数目。 2.尝试建立索引来帮助查询。 检查自己的SQL语句,为在WHERE子句中出现的字段建立索引。 使查询引擎快速的定位到指定条件。 3.尝试建立一些复合索引来进一步提高系统性能(修改复合索引将消耗更多的时间,且占磁盘空间)4.对小型表(记录少)建立索引可能反而影响性能,因为此时对表扫描操作效率更高。 (查询优化器不能智能处理)5.避免对具有较少值的字段建立索引(如性别)6.避免选择具有大型数据类型的列作为索引。

请教高手oracle 创建了索引后在使用SELECT,UPDATE,DELETE和INSERT语句时性能影响上有什么不同?

创建了索引后UPDATE,DELETE和INSERT性能可能会略微降低一点点. 也可能不影响SELECT 性能可能会提高不少,也可能提高一点点,也可能一点影响也没有,甚至也有可能降低.具体影响 要考虑很多个方面。 例如你有一个表TEST(Aint, Bint, Cvarchar2)你在 C 这一列 上面创建了索引。 那么首先, DELETE和INSERT,是肯定要更新索引数据的。 因此会 性能会略微降低一点点。 UPDATE, 如果是 SET C=... , 如果 要更新索引数据的。 因此会 性能会略微降低一点点。 如果是SETA = ..., 和索引列无关的, 那么就没影响。 置于 SELECT如果数据量很大, 比如 千万行, 每一个 C 都不一样。 你只需要检索一行例如SELECT * FROM test WHEREc = a;那么有索引,性能可能会提高不少。 如果数据量不大, 也就几万行, 那么有索引,性能可能会提高一点点。 如果你使用了函数SELECT * FROM test WHERELOWER (c) = a;那么, 有索引和没索引一样。 如果数据量很大, 比如 千万行, 很多 C 都一样。 例如只有10种C 你需要检索某种 c 的数据例如SELECT * FROM test WHEREc = a1;那么有索引,性能可能会降低.

下列软件中属于应用软件的是( ) A. 操作系统 B. 编译程序 C. 数据库管理系统 D. 财务管理系统

选D、财务管理系统。 A、操作系统 B、编译程序 C、数据库管理系统三个选项都是指系统软件。 系统软件为计算机使用提供最基本的功能,使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。 扩展资料:应用软件的用途分类:1、办公室软件:文书试算表程式投影片报告数学程式创建编辑器绘图程式基础数据库档案管理系统文本编辑器。 2、互联网软件:即时通讯软件电子邮件客户端网页浏览器客户端下载工具。 3、商务软件:会计软件企业工作流程分析客户关系管理Backoffice企业资源规划供应链管理产品生命周期管理4、分析软件:计算机代数系统统计软件数字计算计算机辅助工程设计5、多媒体软件:媒体播放器图像编辑软件音讯编辑软件视讯编辑软件计算机辅助设计计算机游戏桌面排版参考资料来源:网络百科-软件参考资料来源:网络百科-应用软件

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐