与常规B树索引相反,反向键索引在保持列顺序的同时反转索引列的字节。反向键索引通过反转索引键的数据值,使得索引的修改平均分布到整个索引树上。主要应用于所多个实例同时访问一个数据库的场景中。
(4)创建位图索引
优点:相对于B树索引而言,基于位图索引列的查询可以减少响应时间。
相比其他索引技术,位图索引占用空间明显减少。
(5)其他索引
组合索引:在表内多列上创建。索引中的列不必与表中的列顺序一致,也不必相互邻接。
基于函数的索引:需要创建的索引需要使用表中一列或多列的函数或表达式,也可以将基于函数的索引创建为B树索引或位图索引
3、创建索引的原则
频繁搜索的列可以作为索引列
经常排序,分组的列可以作为索引
经常用作连接的列(主键/外键)可以作为索引
将索引放在一个单独的表空间中,不要放在有回退段、临时段和表的表空间中
对于大型索引而言,考虑使用NOLOGIN子句创建大型索引。
根据业务数据发生频率,定期重新生成或重新组织索引,进行碎片整理
4.查看索引
和索引有关的数据字典:
USER_INDEXS:用户创建的索引信息
USER_IND_COLUMNS:与索引相关的表列信息
5.维护索引
(1)重建索引
索引需要维护,如果建立了索引的表中有大量的删除和插入操作,会使得索引很大,因为删除操作后,删除值的索引空间不能被自动重新使用,对于大表和DML操作很频繁的表,索引的维护是很重要的。Oracle提供了rebuild指令来重建索引。使索引空间可以重用删除值所占用的空间,使索引更加紧凑。
(2)合并索引碎片
合并索引碎片可以释放部分磁盘空间,是索引维护的一种重要方式,也是维护磁盘空间的方式,类似于磁盘碎片整理,把不用的空间释放出来再利用。
(3)重命名索引
(4)删除索引
八、视图
视图是一个虚表,不占用物理空间,因为视图本身的定义语句存储在数据字典里,视图中的数据是一个或多个实际表中获得的。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。
1、视图的优点:
1) 提供了另外一种级别的表安全性
2) 隐藏的数据的复杂性:一个视图可能是用多表连接定义的,但用户不需要知道多表连接的语句也可以查询数据。
3) 简化的用户的SQL命令:查询视图的时候不需要写出复杂的查询语句,只需要查询视图名称即可。
4) 隔离基表结构的改变:视图创建好了之后,如果修改了表的结构,也不会影响视图的。
5)通过重命名列,从另一个角度提供数据:例如在销售系统中,每日下班前要对当日数据进行汇总,在销售人员眼中,该汇总表成为日销售统计表,在财务人眼中,该销售表成为销售日报表
2.创建视图
参数解释:
OR REPLACE:如果视图已存在,此选项将重新创建该视图。
FORCE:如果使用此关键字,则无论基表是否存在,都将创建视图。
NOFORCE:这是默认值,如果使用此关键字,则仅当基表存在时才创建视图。
VIEW_NAME:要创建视图的名称
Alias:指定由视图的查询所选择的表达式或列的别名。别名的数目必须与视图所选择的表达式的数目相匹配。
Select_statement:select语句
WITH CHECK OPTION :此选项指定只能插入或更新视图可以访问的行。术语constraint表示为CHECK OPTION约束指定的名称。
WITH READ ONLY:此选项保证不能在此视图上执行任何修改操作。
3、DML语句和复杂视图