一、索引
(此知识可在后面再深入学习,此处仅作记录)
作用:在数据库中的作用类似于书的目录,用来提高查找信息的速度,因为使用索引查找数据,无需对整表进行扫描。
缺点:需要占用存储空间;创建及维护索引需要时间精力;当对表更新时,索引需要被重建。
二、视图
属于虚拟表,将查询定义保存起来的对象,不包含数据,储存的是查询语句(索引视图除外)。
作用:简化查询;增加数据的保密性;安全性得到保证
缺点:只是简化查询,并不提高查询速度;增加维护成本
分类:
标准视图;
索引视图:被具体化了的,显著提高查询性能,聚合了很多行的查询,不太适合经常更新基本数据集;一修改索引视图里的数据,基本表的数据也会跟着更改。
分区视图:一台或多台服务器间水平连接一组成员表的分区数据。
1、标准视图
有点类似把sql查询语句直接存储在数据库,而不是本地
create view vStudentInfo
as
--以下为查询语句
select s.s_id,s_name,s_sex,s_score from student s
inner join score sc on s.s_id=sc.s_id and c_id=01
2、索引视图
create view vStudentInfo_Index with schemabinding
as
select s_id,s_name,s_sex from dbo.student
--必须写出字段名,不能选取所有列(*),表名需带所有者(dbo)
3、分区视图(与标准视图有何区别?只是因为跨数据或者表,且成员表结构相同,才叫分区?)
--准备工作:创建student2并插入数据
create table student2
(
s_id int primary key not null,
s_name varchar(16) null,
s_birth date null,
s_sex char(2) null,
s_date date null
)
insert student2 values
(1,'张三','2005-01-01','男','2012-09-01'),
(2,'李四','2005-01-01','男','2012-09-01'),
(3,'王五','2005-01-01','男','2012-09-01'),
(4,'蔡六','2005-01-01','男','2012-09-01')
--创建视图
create view vStudentInfo_Union
as
select * from student
union all
select * from student2
--提取数据
select * from vStudentInfo_Union
3、使用视图
把视图当成表,直接用select语句查询
select * from vStudentInfo
where s_score>=60