oracle索引
作用
当表数据量很大的时候,进行查询操作时I/O开销会很大,此时可以考虑建立索引减小系统开销.
建立索引注意点
1.索引应该建立在where语句使用频率高的列上
2.索引建立在经常进行排序的列上,可加快排序速度
3.索引使用的列个数不是越多越好,列的个数会影响insert和delete操作速度
4.在建立索引时,oracle会将相应的列数据添加到索引块,此时要设置PCTFREE参数(如果表上insert操作会很频繁的话,则参数值要大一些)
5.表和索引在同一表空间可以简化表空间管理,在不同表空间可以提高访问性能
6.在数据量大的表上建立索引时,使用nologging选项可以节省重做日志空间,降低索引建立时间,提高索引并行建立性能.
7.数据量小的表不用建立索引
8.将索引建立在连接列上可以提高多表联合查询的性能
创建索引
建立B树索引(常用的,默认的索引建立方式)
Create index 索引名
On 表名(列名)
Pctfree 大小 --指定预留空间大小(为insert操作预留的空间)
Tablespace 表空间名;
他的索引查询实现机制可以参照B-树
建立位图索引(当列基数小于1%时使用)
Create bitmap index 索引名
On 表名
Tablespace 表空间名;
列基数:列可取值个数/数据行数
建立反向键索引
Create index 索引名
On 表名(列名) reverse
Tablespace 表空间名;
如果已经建立默认索引,想重新建立反向索引
alter index 索引名
rebuilder reverse;
存储结构依然使用的是B-树,不过将键值顺序颠倒存储(如简直是1234则存储时以4321为键值)
建立基于函数的索引
Create index 索引名
On 表名(函数名(列名));