Oracle索引的理解

Oracle索引通过存储特定列的排序数据快速地访问表行,使用这些排序值很容易查找到相应的表行,此方法类似于你使用一本书的索引快速找到你所感兴趣的条目。


索引可以查找有某个列值的行,而不必要查看表中的其他行。因此适当使用索引将会最大程度的减少使用稀缺的磁盘IO。索引由oracle维护。


使用索引涉及快速的检索查询的结果与低速的更新和插入之间的折中的问题。折中的第一部分,即快速执行查询是显然的:如果你查找一个排序索引而不执行全表扫描,那么查询会更快。但是在更新、插入或删除有索引的表行时,索引也必须随之更新、插入或删除。这就使得这些处理过程在有索引表上更耗时。另外,大表有大索引,磁盘除了存储表数据外还要用来容纳这些索引。

通过如果一个表大部分时间用于读取数据,那么则最好多用索引。如果多数数据库为OLTP型,有大量的插入、更新和删除操作,则最好少用索引。

除非需要访问大多数表行,否则带索引的查询获取结果的速度通常比无索引的快。


索引对于用户来说是完全透明的,即在你创建索引时,用户的SQL语句不必改变。


索引和键通常是由于数据库使用索引来实施完整性约束,两者是不同的概念。


创建Oracle表的有效索引的准则:

     1、如果需要访问的数据不超过表中4%,5%,则可以使用索引

     2、相对较小的表避免使用索引

     3、对所有的表创建主键。oracle自动将主键列创建索引

     4、对包括在多表联结操作中使用的列建立索引

     5、对在where子句中频繁使用的列建立索引

     6、对包括在ORDER BY 和GROUP BY操作的列或涉及排序的UNION和DISTINCT等其他操作的列建立索引。

     7、由长字符串组成的列通常不是索引的候选列。

     8、被频繁更改的列由于涉及开销问题,理论上不索引

     9、只对有高选择性的表建立索引。

     10、使索引的数目减少

     11、不唯一时,可以使用组合索引

建立索引表的黄金法则:表的索引应该基于你所期望的查询中出现的表列。

你可能感兴趣的:(Oracle,Advanced,Knowledge)