------索引与视图------
索引提供对数据表的快速访问,视图给数据表提供了另外一种数据组织方式
1.创建唯一索引
唯一索引是指索引的键值不重复,为表上的某字段创建唯一索引时,应确定该字段没有null值,否则在使用的时候会经常出错;唯一索引可以确保索引列不包含重复的值,在多列唯一索引的情况下,该索引可以确保索引列中每个值组合都是唯一的
create unique index un_sno on stu(sno asc);
在实际应用中,唯一索引一般采取自动创建方式,即在定义主键约束或唯一约束时,Oracle系统自动在相应的约束列上建立唯一索引
索引名称有一定命名规则,唯一索引一般加上前缀UN_;此外,在一个表中应是唯一的,但在同一个数据库或不同数据库中可以重复
2.创建单列索引
单列索引是指索引基于单个列所创建
在数据库中,单列索引允许数据库通过搜索索引找到特定的值,然后跟随指针到达包含该值的行,而不必扫描整个数据库,从而快速访问数据库表中的特定信息
create index index_age on stu(sage desc);
索引创建后,Oracle显示的索引类型为FUNCTION-BASED NORMAL,其意义为B树索引,即索引按B树结构组织并存放索引数据
3.创建复合索引
复合索引也称为组合索引,是指索引项是多个索引,即在索引建立语句中同时包含多个列名;由于复合索引包含多个索引项目,能形成索引覆盖,因此能提高where语句的查询效率
create index index_snodept on stu(sno desc,sdept);
创建该索引后,在stu表上使用where sno= and sdept = 之类的select语句的查询效率将大大提高
符合索引的使用原则是第一个条件应该是复合索引的第一列,且复合索引的顺序一定要和查询语句中where子句后的条件顺序相同才有效;此外,如果数据表过大,则有些列不适合作为索引(比如字符型长度超过40的),如果表是经常需要更新的也不适合做索引
复合索引的引用需要满足较多的条件,既要包含条件,又要保证条件的顺序,因此复合索引不能替代多个单一索引
4.使用alter index重建索引
重命名
alter index index_snodept rename to index_snd;
合并
alter index index_snd coalesce;
重建
alter index index_snd rebuild;
重建索引实际上就是对原有的索引的删除,再重新建一个新的索引,而索引的名称不变
合并索引和重建索引都能消除索引碎片,其区别在