索引 视图

一、索引

1.索引的分类及语法

1).B-TREE索引 BALANCE-TREE

(ORACLE的默认索引类型,工作中最常见、使用范围最广的索引)
语法:

CREATE INDEX IND_NAME ON TB_NAME(COL_NAME);
create index ind_name'索引名' on tb_name'表名'(col_name)'字段名'

2).位图索引 (位图+ROWID)

说明:位图索引在创建时,会扫描整张表,为索引列的每个取值建立一个不重复的位图(BITMAP)来描述该取值

语法:

CREATE BITMAP INDEX IND_NAME ON TB_NAME(COL_NAME);

适用场景:列基数比较小的时候使用(性别、婚姻状况)
3)反向键索引(简称:反向索引)

说明:可以视作一种特殊的B-TREE索引,存储索引列的反向值

背景:为防止B-TREE索引在某叶上数据量占比过高而使用的一种索引
语法:

CREATE INDEX IND_NAME ON TB_NAME(COL_NAME) REVERSE;

适用场景:原始数据分支不明显但反向数据分支明显的列(身高:集中在一米七一米八)
4)基于函数的索引

说明:可以视作一种特殊的B-TREE索引,存储函数处理后的数据

背景:在某个字段上以原值建立了索引,但是在筛选时在该字段上经常加函数,导致索引无法生效
语法:

CREATE INDEX IND_NAME ON TB_NAME(FUNCTION(COL_NAME));

适用场景:对某列进行筛选时经常需要配合函数使用(例如查找姓名中的首字母)

2.按唯一性(索引列中的数据是否有重复值)

1.唯一索引 --索引列中不可能出现重复值
语法:

CREATE UNIQUE INDEX IND_NAME ON TB_NAME(COL_NAME);

注意点:

1)B-TREE索引可以建立唯一索引,位图索引不能建立唯一索引
2)如果在某列上建立了唯一约束或主键约束,ORACLE会自动在该列上建立一个同名的唯一索引

2.非唯一索引 --索引列中可能出现重复值
语法:

CREATE INDEX IND_NAME ON TB_NAME(COL_NAME);

3.按列的个数(索引覆盖的列的个数)

1.单列索引 --基于一个列建立的索引
语法:

CREATE INDEX IND_NAME ON TB_NAME(COL_NAME);

2.复合索引(也称为联合索引) --基于两个或两个以上列建立的索引
语法:

CREATE INDEX IND_NAME ON TB_NAME(COL_NAME1,COL_NAME2...);

4.索引的删除

语法:

drop index ind_name

5.索引的禁用和重建

禁用索引的语法:

ALTER INDEX IND_NAME UNUSABLE;

重建索引的语法:

ALTER INDEX IND_NAME REBUILD;

注意!

【插入完成后统一维护索引】比【一边插入一边维护】的速度要快

二、视图

1.定义

视图是将SQL查询语句的结果动态保存到数据库中的一张虚拟表

定义解读:

1)视图可以像普通的事实表一样去使用
2)视图本身不存储数据,它只是动态地获取表的查询结果

权限要求:GRANT CREATE VIEW TO USERNAME;

2.语法

语法:

CREATE [OR REPLACE] VIEW V_viewname [(别名1,别名2...)] AS
  SQL语句
[WITH CHECK OPTION]  --检查  --可读写视图
[WITH READ ONLY] ;  --只读

基表:视图的来源表

3.视图删除

语法:

drop view v_name
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值