Oracle数据库索引创建要做到三个适当

在Oracle数据库中,创建索引虽然比较简单。但是要合理的创建索引则比较困难了。笔者认为,在创 建索引时要做到三个适当,即在适当的表上、适当的列上创建适当数量的索引。虽然这可以通过一句话来 概括优化的索引的基本准则,但是要做到这一点的话,需要数据库管理员做出很大的努力。具体的来说, 要做到这个三个适当有如下几个要求。

一、 根据表的大小来创建索引。

虽然给表创建索引,可以提高查询的效率。但是数据库管理员需要注意的是,索引也需要一定的开销 的。为此并不是说给所有的表都创建索引,那么就可以提高数据库的性能。这个认识是错误的。恰恰相反 ,如果不管三七二十一,给所有的表都创建了索引,那么其反而会给数据库的性能造成负面的影响。因为 此时滥用索引的开销可能已经远远大于由此带来的性能方面的收益。所以笔者认为,数据库管理员首先需 要做到,为合适的表来建立索引,而不是为所有的表建立索引。

一般来说,不需要为比较小的表创建索引。如在一个ERP系统的数据库中,department表用来存储企业 部门的信息。一般企业的部分也就十几个,最多不会超过一百个。这100条记录对于人来说,可能算是比 较多了。但是对于计算机来说,这给他塞塞牙缝都还不够。所以,对类似的小表没有必要建立索引。因为 即使建立了索引,其性能也不会得到很大的改善。相反索引建立的开销,如维护成本等等,要比这个要大 。也就是说,付出的要比得到的多,显然违反常理。

另外,就是对于超大的表,也不一定要建立索引。有些表虽然比较大,记录数量非常的多。但是此时 为这个表建立索引并一定的合适。如系统中有一张表,其主要用来保存数据库中的一些变更信息。往往这 些信息只给数据库管理员使用。此时为这张表建立索引的话,反而不合适。因为这张表很少用到,只有在 出问题的时候才需要查看。其次其即使查看,需要查询的纪录也不会很多,可能就是最近一周的更新记录 等等。对于对于一些超大的表,建立索引有时候往往不能够达到预计的效果。而且在打表上建立索引,其 索引的开销要比普通的表大的多。那么到底是否给大表建立索引呢?笔者认为,主要是看两个方面的内容 。首先是需要关注一下,在这张大表中经常需要查询的记录数量。一般来说,如果经常需要查询的数据不 超过10%到15%的话,那就没有必要为其建立索引的必要。因为此时建立索引的开销可能要比性能的改善大 的多。这个比例只是一个经验的数据。如果数据库管理员需要得出一个比较精确的结论,那么就需要进行 测试分析。即数据库管理员需要测试一下全表扫描的时间,看看其是否比建立索引后的查询时间要长或者 短。如果是长的话,则说明有建立索引的必要。但是如果没有的话,则说明还是全表扫描速度来的快。此 时也就没有必要建立索引了。

总之,在考虑是否该为表建立索引时,一般来说小表没有建立索引的必要。而对于打表的话,则需要 进行实际情况实际分析。简单一点的,可以根据大致的比率来确定。如果要精确一点的,则可以进行全表 扫描性能分析,以判断建立索引后是否真的如预期那样改善了数据库性能。

时间: 2025-01-02 00:53:43

Oracle数据库索引创建要做到三个适当的相关文章

Oracle数据库索引的维护_oracle

正在看的ORACLE教程是:Oracle数据库索引的维护. 本文只讨论Oracle中最常见的索引,即是B-tree索引.本文中涉及的数据库版本是Oracle8i. 一. 查看系统表中的用户索引 在Oracle中,SYSTEM表是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程.包.函数和触发器的定义以及系统回滚段. 一般来说,应该尽量避免在SYSTEM表中存储非SYSTEM用户的对象.因为这样会带来数据库维护和管理的很多问题.一旦SYSTEM表损坏了,只能重新生成数据库.我们可以用下

索引和检索 无效-关于oracle数据库索引

问题描述 关于oracle数据库索引 执行sql如下: select * from lm3.cc03 where aae017 in ( select distinct natl.jgid from be3.agency_natl natl, be3.agency_config conf where natl.jgid = conf.jgid and conf.ywlb = '02' start with natl.jgid = '37100106' connect by prior conf.

Oracle 数据库中创建合理的数据库索引_oracle

笔者认为,在创建索引时要做到三个适当,即在适当的表上.适当的列上创建适当数量的索引.虽然这可以通过一句话来概括优化的索引的基本准则,但是要做到这一点的话,需要数据库管理员做出很大的努力.具体的来说,要做到这个三个适当有如下几个要求. 一. 根据表的大小来创建索引. 虽然给表创建索引,可以提高查询的效率.但是数据库管理员需要注意的是,索引也需要一定的开销的.为此并不是说给所有的表都创建索引,那么就可以提高数据库的性能.这个认识是错误的.恰恰相反,如果不管三七二十一,给所有的表都创建了索引,那么其反

Oracle数据库的备份与还原三种方法

一. 导出/导入(Export/Import)  利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去.   1. 简单导出数据(Export)和导入数据(Import)   Oracle支持三种方式类型的输出:   (1).表方式(T方式),将指定表的数据导出.   (2).用户方式(U方式),将指定用户的所有对象及数据导出.   (3).全库方式(Full方式),瘵数据库中的所有对象导出.   数据导入(Import)的过程是数据导出(

oracle数据库用户创建、权限分配

oracle|创建|数据|数据库 1.数据库安装时的参数设定下面数据库所用的版本为ORACLE 9I (9.2.0),安装数据库时,数据库系统会创建一个数据库实例,其中:安装目录选为:\oracle,数据库名与数据库SID号都输入:ora9i ,其中的字符集必须选为:ZHS16GBK(否则以后进行跨平台操作时对中文的操作将比较困难).2.数据库用户的创建.权限的分配数据库安装完成后,有两个系统级的用户: 1.          system 默认密码为:manager 2.          s

在oracle数据库里创建自增ID字段的步骤_oracle

在oracle里使用自增ID字段的步骤比较繁琐,总结如下: -- 创建表 CREATE TABLE ADVICE ( ID INT NOT NULL, ACTIVE INT DEFAULT 1 NOT NULL, TYPE INT NOT NULL, MSG VARCHAR2(512) NOT NULL, ADVICE VARCHAR2(4000) NOT NULL, PRIMARY KEY(ID), CONSTRAINT ADVICE_UNI UNIQUE(TYPE,MSG) )TABLESP

Oracle数据库如何创建第一张表_oracle

对于Oracle数据库的使用,创建一张符合自己需求的表是至关重要的,下面就让我们进行创建第一张属于自己的表 创建表时有两种种方式: (1)在cmd里边更具需要进行创建 (2)在sql developer中进行创建,而对于在可视化界面sqldeveloper中创建时,也有两种方式,即一种是使用命令直接进行创建,另外一种是使用可视化界面按钮进行点击创建 下面就是创建的具体过程: (1)首先我们进行数据的连接,在SQLdeveloper中进行操作,在使用sqldeveloper时需要下载sqldeve

oracle数据库如何创建自增列的技巧教程

Oracle没有自增字段这样的功能,但是通过触发器(trigger)和序列(sequence)可以实现. 先建一个测试表了: create table userlogin (      id   number(6) not null,      name   varchar2(30)   not null primary key ) tablespace users /   第一步:创建SEQUENCE create sequence userlogin_seq increment by 1 s

UNIX下ORACLE数据库的创建

oracle|unix|创建|数据|数据库 创建数据库虽说是一件很平常的工作,在ORACLE的参考文档中也有一定的描述,但现实中确有很多人都不会,一方面是因为平时很少有这样的机会让你去做,而真有了这样的机会让你做的时候,可能又手忙脚乱的不知道如何下手,本文将为你提供一个完整的参考. 详细步骤如下: 第一步:准备工作 1. 环境变量:ox1> more .profile_oracyx# 这部分建议提供PATH=/data4/ora817/app/oracle/product/8.1.7/bin:/