1.视图 view
视图是使用select语句最终运行出来的一个结果,每次使用视图时都会运行视图创建时的select语句
语法:create view 视图名称 as select语句
优点:1 可以将复杂的sql存储起来,简化查询操作
2 隐藏一些原表敏感信息,方便实现复杂的业务
3 可以设置只读属性,只用于展示数据
缺点:本身就是SQL查询语句,当进行多个视图连表查询时,会受到创建视图时查询语句的复杂程度而逻 辑变得复杂,性能降低,并且无法优化
2.物化视图 materialized (快照表)
物化视图本质是一张select语句的查询结果生成的表,是真实存在的表,但是不能进行dml(增,删,改)的操 作,其与创建原表的数据和结构完全一致,物化视图可以对表进行备份。
物化视图不能dml操作,但是可以进行刷新(reflush)
语法:create mterialized view 物化视图名字 refresh 更新方式 on 刷新方式 as select语句
创建物化视图时原表需要有主键约束,并且先要创建物化视图日志
创建日志:create materialized view log on 表名
物化视图三种更新方式:
1.complete:完全更新,更新时更新全部数据
2.fast:部分更新,只跟随原表更新原表中更新的数据
3.force:默认更新,fast更新
物化视图的三种刷新方式:
1.提交时更新:create mterialized view 物化视图名字 refresh 更新方式 on commit as select语句
2.定时刷新:create mterialized view 物化视图名字 refresh 更新方式 on demand start with 开始更新 时间 next 下一次更新时间 as select 语句
3.不设置刷新方式的物化视图:create mterialized view 物化视图名字 as select语句
不设置刷新方式的物化视图使用dbms_mview.refresh('物化视图名字','刷新方法')来刷新,需要放到 begin ... end 的代码块中执行
3.视图和物化视图的区别:
1.视图是一个select语句查询结果,本质是一个select语句,物化视图本质是一张不能修改的表格。
2.视图在一定条件可以修改数据,会影响到原表中的数据,物化视图不可以
3.视图数据随原表中数据变动,物化视图需要刷新才可以更新
4.物化视图可以添加索引,优化查询速度