(本节内容主要是:索引与视图)
/*
索引1)模式中的一个数据库对象
2)作用:在数据库中用来加速对表的查询
3)通过使用快速路径访问方法快速定位数据,减少了磁盘的I/O
4)与表独立存放,但不能独立存在,必须属于某个表
5)由数据库自动维护,表被删除时,该表上的索引自动被删除
6)索引的作用类似于书的目录,几乎没有一本书没有目录,因此几乎没有一张表没有索引
怎样创建索引?
自动:当在表上定义一个PRIMARY KEY或者UNIQUE约束条件时,数据库自动创建一个对应的索引
手动:用户可以创建索引以加速查询
*/
#手动创建索引
CREATE INDEX index_tb_student_name
ON tb_student(stu_name);
#使用索引,在where之后加上索引,提供查询效率
SELECT * FROM tb_student WHERE stu_name = ?
/*
数据库查询方式:1)全表扫描、 2)通过索引查询数据 3)共享语句
索引原理: 索引页
索引:在经常查询的字段上面建立索引
1)利用index对查询进行优化,(index可以避免对表的一个全面扫描)
2)原理:当以某个字段建立一个索引的时候,数据库就会上传一个索引页,索引页不单单保存索引的数据,
还保存索引在数据库的具体的物理地址,当我们查询数据时,oracle会先查索引,这样就能很快定位查找到要找的记录。
注意:
1)如果表的列很少,不适合建索引。
2)当执行过多次的insert,delete,update后,会出现索引碎片,
(索引碎片类似于磁盘碎片)影响查询速度,我们应该对索引进行重组。
如何重组?
drop index index_name;
create index index_name on table(column)
*/
/*
视图的好处:
1)可以限制对数据的访问
2)可以使复杂的查询变得简单
3)提供数据的独立性
4)提供了对系统数据的不同显示
创建视图:(简单视图)
create view emp_v_10 as
select id,name,loc,description
from tb_emp
where id= 6;
使用:
select * from emp_v_10;
创建复杂视图
create view emp_v as
select empno as 部门编号,avg(sal) as 平均工资,max(sal) as 最高工资,
min(sal) as 最低工资,sum(sal) as 工资总数,count(1)部门人员
from tb_emp
group by deptno
使用:
select * from emp_v;
修改视图,不建议修改视图,直接删除视图。删除视图的时候,不会删除数据。
*/