视图和索引
虚拟视图
虚拟视图
- 不以物理形式实际存在;
- 通过已有关系定义;
- 随关系变化实时动态更新;
定义视图
CREATE VIEW <视图名> AS <视图定义>
;<视图定义>
为 SQL 查询;
CREATE VIEW Paramount Movies AS
SELECT title,year
FROM Movies
WHERE studioName= Paramount";
视图查询
- 等同于表;
视图重命名
CREATE VIEW Paramount(movieTitle, prodYear) Movies AS
SELECT title,year
FROM Movies
WHERE studioName= Paramount";
视图更新表
更新机制
- 大多视图无法进行更新操作;
- 可进行更新操作的视图叫做可更新视图;
- 将对视图的更新转换为对表的更新;
- 关系的更新总会影响对应视图;
删除视图
- 不可更新视图的删除不会影响对应表的删除;
DROP VIEW ParamountMovies;
可更新视图
- 视图对应单个关系 R;
- SELECT 不可使用 DISTINCT;
- FROM 只能有一个关系 R;
- WHERE 中的子查询不可以使用 R;
- 视图属性包括足够多的属性;
- 更新操作同表;
物理视图
物理视图
- 将经常使用的虚拟视图进行物理存储;
定义物理视图
CREATE MATERIALIZED VIEW MoViePrOd AS
SELECT title,year,name
FROM Movies,MovieExec
WHERE producerC#=cert#;
更新物理视图
- 物理视图可进行任何更新操作;
- 物理视图的更新操作会作用于对应表;
- 关系的更新总会影响对应视图;
- 更新操作同表;
索引
索引
- 定义于属性(组) A;
- 一种数据结构;
- 加快 A 的查询效率;
声明索引
-- 单一属性
CREATE INDEX YearIndex ON Movies(year);
-- 多属性
CREATE INDEX KeyIndex ON Movies(title,year);
删除索引
DROP INDEX YearIndex;
索引选择
- B 树;