甲骨文和PostgreSQL开发(20)-物化视图

  

甲骨文和PostgreSQL都提供了物化视图,但甲骨文的功能显然比PostgreSQL要强大不少,特别是查询重写查询重写功能。

  

  <强>甲骨文   
创建数据表和物化视图日志,插入数据   <前>   <代码> TEST-orcl@DESKTOP-V430TU3> drop table t_materializedview;   表了。   TEST-orcl@DESKTOP-V430TU3>创建表t_materializedview (int id主键,c1 varchar2 (20);   创建表。   t_materializedview TEST-orcl@DESKTOP-V430TU3>创建物化视图日志;   创建物化视图日志。   TEST-orcl@DESKTOP-V430TU3>删除表t_materializedview;   表了。   TEST-orcl@DESKTOP-V430TU3>创建表t_materializedview (int id主键,c1 varchar2 (20);   创建表。   TEST-orcl@DESKTOP-V430TU3>   TEST-orcl@DESKTOP-V430TU3>插入t_materializedview (id、c1)选择rownum '测试' | | rownum dba_objects;   128068行。   TEST-orcl@DESKTOP-V430TU3>插入t_materializedview (id、c1)选择rownum + 1000000,“测试”| | rownum dba_objects;   128068行。   TEST-orcl@DESKTOP-V430TU3>提交;   提交完成。   TEST-orcl@DESKTOP-V430TU3>   t_materializedview TEST-orcl@DESKTOP-V430TU3>创建物化视图日志;   创建物化视图日志。      

创建物化视图

  <前>   <代码> TEST-orcl@DESKTOP-V430TU3>物化视图vw_t_materializedview下降;   物化视图删除。   vw_t_materializedview TEST-orcl@DESKTOP-V430TU3>创建物化视图   2快速刷新的需求开始与sysdate主键启用查询重写   3在select * from t_materializedview c1像“测试%”;   创建物化视图。      

查询基表

  <前>   <代码> TEST-orcl@DESKTOP-V430TU3>   TEST-orcl@DESKTOP-V430TU3> select *从t_materializedview c1的测试%和id & lt;10;   ID C1   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   1 test1   2 test2   3 test3   4 test4   5 test5   6 test6   7 test7   8 test8   9 test9   9行选择。   autotrace traceon TEST-orcl@DESKTOP-V430TU3>集   TEST-orcl@DESKTOP-V430TU3> select *从t_materializedview c1的测试%和id & lt;10;   9行选择。   执行计划   ----------------------------------------------------------   计划散列值:1344903509   --------------------------------------------------------------------------------   --------------------------------   | | | |操作Id名称|行   字节成本(% CPU) | | |   --------------------------------------------------------------------------------   --------------------------------   SELECT语句| 0 | | | |   225 | 3 (0)| 00:00:01 |   | 1 | MAT_VIEW重写通过索引访问ROWID | VW_T_MATERIALIZEDVIEW | 9 |   225 | 3 (0)| 00:00:01 |   | * 2 | |索引范围扫描SYS_C0055952 | 9 |   | 2 (0)| 00:00:01 |   --------------------------------------------------------------------------------   --------------------------------   谓词信息(由操作id):   ---------------------------------------------------   2 -访问(“VW_T_MATERIALIZEDVIEW”。“ID”& lt; 10)   请注意   -----   ——“PLAN_TABLE”是旧版本   这句话所用的动态取样(级别=2)   统计数据   ----------------------------------------------------------   0递归调用   0数据库块收到   5一致就   0物理读   0重做的尺寸   通过SQL *网客户端发送756字节   通过SQL * 500字节收到从客户端   2 SQL *净循环/从客户端   0类(内存)   0类(磁盘)   9行处理   TEST-orcl@DESKTOP-V430TU3>      

从执行计划可以看的到,查询语句被自动重写为查询物化视图。

  

  <强> PostgreSQL   
创建数据表,插入数据   <前>   <代码>(本地):5432 pg12@testdb=# drop table t_materializedview;   错误:表“t_materializedview”并不存在   时间:31.285毫秒   (本地):5432 pg12@testdb=#创建表t_materializedview (int id主键,c1 varchar (20));   创建表   时间:194.505毫秒   (本地):5432 pg12@testdb=#   (本地):5432 pg12@testdb=#插入t_materializedview (id、c1)选择x '测试' | | x generate_series x (100000);   插入0 100000   时间:600.401毫秒   (本地):5432 pg12@testdb=#插入t_materializedview (id、c1)选择x '测试' | | x generate_series (100001、200000) x;   插入0 100000   时间:520.054毫秒   (本地):5432 pg12@testdb=#      

创建物化视图

  <前>   <代码>(本地):5432 pg12@testdb=#物化视图vw_t_materializedview下降;   错误:物化视图“vw_t_materializedview”并不存在   时间:1.114毫秒   (本地):5432 pg12@testdb=# vw_t_materializedview创建物化视图   从t_materializedview pg12@testdb——# select * c1像“测试%”;   选择100000   时间:302.380毫秒   (本地):5432 pg12@testdb=#   

甲骨文和PostgreSQL开发(20)-物化视图