oracle学习之索引

来源:互联网 发布:数据录入口径 编辑:程序博客网 时间:2024/05/21 11:10

索引

  做开发的同志们都知道索引的重要性,索引可以提高查询速度,但是使用或者选择不当,对数据更新等操作会造成严重后果。

  索引主要主要分为几类:普通索引(btree)、位图索引(bitmap)、函数索引等,这里做一个简单地介绍。

  普通索引即btree,顾名思义结构肯定想树一样,有根、茎、叶子之类的。索引排序之后按照先后顺序先从叶子排列,叶子排满之后,开始往高层次排列,高层次都是排列低层次的指针,所以高度比较低,索引列是有序的。索引本身其实就是一个次序+对应数值的伪列rowid,所以建索引一般都是针对长度较小的主键建立索引,这样索引体积就很小。普通全局索引多用于oltp系统中,而局部索引多用于olap系统中。而普通索引可以和分区表结合使用,提高运行速率,不过这个可是个技术活。如果可以在分区表使用过程中可以使用分区条件,那么可建立局部索引,这时候速率最高,反之如果用不到分区条件,这时候局部索引就是累赘,要一个个查询,最后得到结果(这时候适合建立全局索引)。

  全局索引:create  index idx_t1_tt1 on t(tt1);  (遇分区表时候分区删除、合并、分割增删都会使全局索引失效,这时候要使用语句更新索引alter table t truncate partition part_01 update global indexes)

  局部索引:create index idx_t2_tt1 on t(tt1) local;

  位图索引:位图索引就是bitmap索引,她可以在统计条数和快速定位方面做得比较优秀(例如统计员工基本情况,在性别、学历等建立位图所以,可以提高统计条数和定位速度),但是在位图索引列重复度低的情况下,那么oracle一般会规避走bitmap索引查询。

  创建位图索引:create bitmap index idx_bitmap_male on t(male);

  函数索引:即用利用某列的函数值作为索引,创建语句很简单,把原来的列换成函数就可以。create index iex_fun_date on t(to_char(date,'yyyymm'));

  索引差不多就这么多,已经介绍完毕。

0 0
原创粉丝点击