索引可以分为
B树索引
位图索引
反向键索引
和基于函数的索引
按照索引列的唯一性又可以分为:唯一性索引和非唯一索引
按照索引列的个数可以分为:单列索引和复合索引
创建索引时应该注意以下几个条件
1,创建索引的列应该是频繁作为where查询条件的某个列或某几个列作为条件执行索引操作,并且索引的行数需要低于总行数的15%
2,如果经常需要基于某个列或者某几个列执行排序操作那么在这些列上创建索引操作可以加快数据排序速度
3,应限制表的索引个数,索引主要是用于加快查询速度但是会降低DML(insert,delete)操作速度索引越多dml操作越慢
4,指定索引块的使用参数 Oracle会按照pctfree参数在索引块上预留部分空间给未来的insert操作做准备,如果将来在表中进行大量的insert操作应适当的增大pctfree空间
5,应该讲索引放在和表相同的分区下
6,在大表创建索引是nologging可以最小化重做记录,节省重做日志时间,降低索引建立时间,提高索引并行建立的性能
7,小表不要创建索引
B树索引:
B书索引中的数据是以升序方式进行排列的
B树索引列通过索引列列值+物理地址来快速查找
在B树索引中无论用户要搜索那个分支的叶块,都可以保证经过相同的索引层次是相同的(无论搜索那个叶块经过的索引层数相同