
在创建Oracle索引时,有一些问题使我们需要注意的,下面就为您介绍创建Oracle索引的一些注意事项,希望对您学习创建Oracle索引方面能有所帮助。
1、一般来说,不需要为比较小的表创建索引;
2、即使是大表,如果经常需要查询的数据不超过10%到15%的话,那就没有必要为其建立索引的必要。因为此时建立索引的开销可能要比性能的改善大的多。这个比例只是一个经验的数据。如果数据库管理员需要得出一个比较精确的结论,那么就需要进行测试分析。
3、如对于一些重复内容比较少的列,特别是对于那些定义了唯一约束的列。在这些列上建立索引,往往可以起到非常不错的效果。如对于一些null值的列与非Null值的列混合情况下,如果用户需要经常查询所有的非Null值记录的列,则***为其设置索引。如果经常需要多表连接查询,在用与连接的列上设置索引可以达到事半功倍的效果。
4、数据库管理员,需要隔一段时间,如一年,对数据库的索引进行优化。该去掉的去掉,该调整的调整,以提高数据库的性能。
5、通常来说,表的索引越多,其查询的速度也就越快。但是,表的更新速度则会降低。这主要是因为表的更新(如往表中插入一条记录)速度,反而随着索引的增加而增加。这主要是因为,在更新记录的同时需要更新相关的索引信息。为此,到底在表中创建多少索引合适,就需要在这个更新速度与查询速度之间取得一个均衡点。
6、对于一些数据仓库或者决策型数据库系统,其主要用来进行查询。相关的记录往往是在数据库初始化的时候倒入。此时,设置的索引多一点,可以提高数据库的查询性能。同时因为记录不怎么更新,所以索引比较多的情况下,也不会影响到更新的速度。即使在起初的时候需要导入大量的数据,此时也可以先将索引禁用掉。等到数据导入完毕后,再启用索引。可以通过这种方式来减少索引对数据更新的影响。相反,如果那些表中经常需要更新记录,如一些事务型的应用系统,数据更新操作是家常便饭的事情。此时如果在一张表中建立过多的索引,则会影响到更新的速度。
7、关于位图索引。
基数是位图索引中的一个基本的定义,它是指数据库表中某个字段内容中不重复的数值。如在员工信息表中的性别字段,一般就只有男跟女两个值,所以,其基数为2;婚姻状况字段的话,则其只有已婚、未婚、离婚三种状态,其基数就为3;民族一览内也是只有有限的几个值。
【编辑推荐】
查看Oracle索引和视图的方法
通过OCI8接口连接Oracle数据库
使用oracle存储过程分页的实例
C#连接Oracle数据库查询更改后的数据
Oracle自动备份数据库的三种方式
mysql数据库事务是什么,能简单定义一下吗
展开全部在创建表的时候create table xxxx ( ..........) engine innoDB; 后一句表示创建引擎类型为innoDB,它支持事务,开启一个事务: start transaction;然后你写你的sql语句,无论你写多少,只要没提交事务,这个事务就存在,有commit显式提交,还有隐式提交,你觉得你写的sql语句没有问题时就,你就commit; 提交这个事务;如果前面你写的sql语句出了问题,比如有条sql语句是批量改金币什么的,改多了。 Rollback;回滚,意思是回到你开启事务时的状态,就是说你开启事务后的所有sql操作当作没有发生,你重新来过。 注意:当一个事务commit,或者rollback就结束了

数据库查询发生死锁

导致死锁的主要原因是SQL语句里有for update 导致。 比如当你访问这个表时候 有人使用了for update进行数据修改,那在你那里调试也好执行也好 都会导致无法返回结果 一直卡在那里。
sql里删除 视图和索引 会对 表 产生 怎样的影响?
视图的作用非常类似你在库中建立的实体表,如果你在你的程序中,或者SQL语句中,使用了视图,则系统提示你‘找不到该视图’。 索引最主要的用途是提高检索数据的速度,如果你的表字段很少,并且数据在1-5000行之内,你删除了索引是感觉不到有啥变化,如果你的数据上了10W条以上,有无索引的速度就非常明显了。
发表评论