Oracle的索引总结
[code]
1. 索引与日志
2. 索引的类型
* B-树索引:几乎所有的关系型数据库中都有b*tree类型索引,也是被最多使用的。其树结构与二叉树比较类似,根据rid快速定位所访问的行。
* 反转键索引:反转了b*tree索引码中的字节,是索引条目分配更均匀,多用于并行服务器环境下,用于减少索引叶的竞争。
* 降序索引:8i中新出现的索引类型,针对逆向排序的查询。
* 位图索引:使用位图来管理与数据行的对应关系,多用于OLAP系统。
* 基于函数的索引:这种索引中保存了数据列基于function返回的值,在select * from table where function(column)=value这种类型的语句中起作用。
* HASH索引
* 索引编排表
* 分区索引
* 本地和全局索引
3. 创建索引的原则
1. 需要平衡query合DML的需要,常用于(子)查询的表应建立索引;
2. 把索引建到不同的表空间中;
3. 用统一的extent大小: 五个block的倍数或者tablespace指定的MINIMUM EXTENT的倍数;
4. 创建索引考虑用NOLOGGING参数,重建索引的时候也一样;
5. 创建索引时INITRANS值应该比相应的table的值高一些;
6. 对常用SQL语句的where条件中的列建立唯一索引或组合索引,组合条件查询中相应的组合索引更有效;
7. 对于组合索引,根据列的唯一值概率,安排索引顺序;
8. 如果一个列具有很低的数据基数,并且或者可具有空值,不应作为索引列;
9. 如果where语句中不得不对查询列采用函数查询,如upper函数,最好建立相应函数索引;
10. 对于低基数集的列,并包含OR等逻辑运算,考虑用Bitmap索引,对于从大量行的表中返回大量的行时也可以考虑Bitmap索引;
11. 避免在有大量并发DML运算的表中使用 Bitmap索引;
12. 能用唯一索引,一定用唯一索引
13. 能加非空,就加非空约束
14. 一定要统计表的信息,索引的信息,柱状图的信息。
15. 联合索引的顺序不同,影响索引的选择,尽量将值少的放在前面
16. 索引不是越多越好,特别是大量从来或者几乎不用的索引,对系统只有损害。OLTP系统每表超过5个索引即会降低性能。
17. 很多时候,单列索引不如复合索引有效率。
18. 用于多表连结的字段,加上索引会很有作用。
19.
4. 常用命令
1. 创建索引
create [unique] index 索引名 on table 表名(列名1,列名2……) where 条件;
2. 释放多余空间
alter index 索引名 deallocate unused;
3. 重建索引
alter index 索引名 rebuild;
4. 删除索引
drop index 索引名
5. 显示表的所有索引
select index_name,index_type,uniqueness from dba_indexes where owner = “user” and table_name=”table_name”;
6. 显示索引列
select column_name,column_position,column_length from dba_ind_columns where index_owner = “user” and index_name= “”;
5. 其他
[/code]
Oracle的索引总结
原创
©著作权归作者所有:来自51CTO博客作者mb644638dfa963e的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:oracle主键的设置
下一篇:数据库连接池的工作机制 面试常问
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Oracle的索引类型总结
多深入的探讨,这
数据库 位图 数据 -
oracle中各种索引的总结
-TREE顾名思义就是类似树结构,我想学过...
Oracle SQL 数据结构 Access F# -
oracle索引 约束简单总结
oracle索引 约束简单总结[code]什么时候应该建立索引? 1. 表很大而且大多数查询的返回数据量很少(oracle推荐
Oracle J# oracle 多列 主键 -
ORACLE中关于外键缺少索引的探讨和总结
在ORACLE数据库中,定义外键约束时,ORACLE是不会自动创建·
oracle 外键字段 索引 sql 外键