
Oracle 视图和索引
发布日期:2021-05-07 19:44:24
浏览次数:25
分类:精选文章
本文共 1728 字,大约阅读时间需要 5 分钟。
文章目录
一、视图
视图的概念:视图就是提供一个查询的窗口,所有数据来自于原表
语法 :CREATE VIEW 视图名称 AS 子查询
---查询语句创建表create table emp as select * from scott.emp;select * from emp;---创建视图【必须有dba权限】create view v_emp as select ename, job from emp;---查询视图select * from v_emp;---修改视图[不推荐],实际的数据也会改变update v_emp set job='CLERK' where ename='ALLEN';commit;---创建只读视图create view v_emp1 as select ename, job from emp with read only;
视图的作用?
第一:视图可以屏蔽掉一些敏感字段。 第二:保证总部和分部数据及时统一。(总部操纵实际的表,分部查询视图这样保证数据的统一)- 语法 1: CREATE VIEW 视图名称 AS 子查询
- 范例:建立一个视图,此视图包括了 20 部门的全部员工信息
- 语法 : CREATE OR REPLACE VIEW 视图名称 AS 子查询
- 一般不会去修改视图,我们可以设置视图为只读
- 语法 3:CREATE OR REPLACE VIEW 视图名称 AS 子查询 WITH READ ONLY
二、索引
索引是用于加速数据存取的数据对象。 合理的使用索引可以大大降低 i/o 次数,从而提高数据访问性能。
索引就是在表的列上构建一个二叉树,达到大幅度提高查询效率的目的,但是索引会影响增删改的效率。-
为什么添加了索引之后,会加快查询速度呢?
图书馆:如果杂乱地放书的话检索起来就非常困难,所以将书分类,然后再建一个箱子,箱子里面放卡片,卡片里面可以按类查询,按书名查或者类别查,这样的话速度会快很多很多,这个就有点像索引。索引的好处就是提高你找到书的速度,但是正是因为你建了索引,就应该有人专门来维护索引,维护索引是要有时间精力的开销的,也就是说索引是不能乱建的。 所以建索引有个原则:如果有一个字段如果不经常查询,就不要去建索引。现在把书变成我们的表,把卡片变成我们的索引,就知道为什么索引会快,为什么会有开销。 -
单列索引:单列索引是基于单个列所建立的索引
语法:CREATE index 索引名 on 表名(列名) -
复合索引:是基于两个列或多个列的索引。在同一张表上可以有多个索引,但是要求列的组合必须不同
-
索引的使用原则:
在大表上建立索引才有意义;在 where 子句后面或者是连接条件上的字段建立索引;表中数据修改频率高时不建议建立索引;
范例:给 person 表的 name 建立索引create index pname_index on person(name);范例:给 person 表创建一个 name 和 gender 的索引create index pname_gender_index on person(name, gender);
---单列索引---创建单列索引create index idx_ename on emp(ename);---单列索引触发规则,条件必须是索引列中的原始值。---单行函数,模糊查询,都会影响索引的触发。select * from emp where ename='SCOTT'---复合索引---创建复合索引create index idx_enamejob on emp(ename, job);---复合索引中第一列为优先检索列---如果要触发复合索引,必须包含有优先检索列中的原始值。select * from emp where ename='SCOTT' and job='xx';---触发复合索引select * from emp where ename='SCOTT' or job='xx';---不触发索引select * from emp where ename='SCOTT';---触发单列索引。
发表评论
最新留言
很好
[***.229.124.182]2025年04月01日 20时53分39秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Oracle删除主表数据
2021-05-08
js中两种定时器,setTimeout和setInterval实现验证码发送
2021-05-08
Oracle常用SQL
2021-05-08
技术美术面试问题整理
2021-05-08
Redis分布式锁原理
2021-05-08
【备份】求极限笔记
2021-05-08
C++学习记录 四、基于多态的企业职工系统
2021-05-08
C++学习记录 五、C++提高编程(2)
2021-05-08
面试问道nginx优化怎么做的
2021-05-08
自学linux毕业shell面试题
2021-05-08
4 Java 访问控制符号的范围
2021-05-08
第9章 - 有没有替代原因(检验证据)
2021-05-08
VUE3(八)setup与ref函数
2021-05-08
Vue之Element标签页保留用户操作缓存。
2021-05-08
智能合约开发实践(1)
2021-05-08
2. Spring Boot学习——Yaml等配置文件教程
2021-05-08
MATLAB——操作矩阵的常用函数
2021-05-08
CMake自学记录,看完保证你知道CMake怎么玩!!!
2021-05-08
Eigen库中vector.transpose()函数什么意思
2021-05-08