Oracle vs PostgreSQL Develop(20) - Materialized View
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,Oracle和PostgreSQL都提供了物化视图,但Oracle的功能显然比PostgreSQL要强大不少,特别是查询重写query rewrite功能。Oracle创建数据表和物化视图日志,插入数
千家信息网最后更新 2025年11月10日Oracle vs PostgreSQL Develop(20) - Materialized View
Oracle和PostgreSQL都提供了物化视图,但Oracle的功能显然比PostgreSQL要强大不少,特别是查询重写query rewrite功能。
Oracle
创建数据表和物化视图日志,插入数据
TEST-orcl@DESKTOP-V430TU3>drop table t_materializedview;Table dropped.TEST-orcl@DESKTOP-V430TU3>create table t_materializedview(id int primary key,c1 varchar2(20));Table created.TEST-orcl@DESKTOP-V430TU3>create materialized view log on t_materializedview;Materialized view log created.TEST-orcl@DESKTOP-V430TU3> drop table t_materializedview;Table dropped.TEST-orcl@DESKTOP-V430TU3>create table t_materializedview(id int primary key,c1 varchar2(20));Table created.TEST-orcl@DESKTOP-V430TU3>TEST-orcl@DESKTOP-V430TU3>insert into t_materializedview(id,c1) select rownum,'test'||rownum from dba_objects;128068 rows created.TEST-orcl@DESKTOP-V430TU3>insert into t_materializedview(id,c1) select rownum+1000000,'TEST'||rownum from dba_objects;128068 rows created.TEST-orcl@DESKTOP-V430TU3>commit;Commit complete.TEST-orcl@DESKTOP-V430TU3>TEST-orcl@DESKTOP-V430TU3>create materialized view log on t_materializedview;Materialized view log created.创建物化视图
TEST-orcl@DESKTOP-V430TU3> drop materialized view vw_t_materializedview;Materialized view dropped.TEST-orcl@DESKTOP-V430TU3>create materialized view vw_t_materializedview 2 refresh fast on demand start with sysdate with primary key enable query rewrite 3 as select * from t_materializedview where c1 like 'test%';Materialized view created.查询基表
TEST-orcl@DESKTOP-V430TU3>TEST-orcl@DESKTOP-V430TU3>select * from t_materializedview where c1 like 'test%' and id < 10; ID C1---------- -------------------- 1 test1 2 test2 3 test3 4 test4 5 test5 6 test6 7 test7 8 test8 9 test99 rows selected.TEST-orcl@DESKTOP-V430TU3>set autotrace traceonlyTEST-orcl@DESKTOP-V430TU3>select * from t_materializedview where c1 like 'test%' and id < 10;9 rows selected.Execution Plan----------------------------------------------------------Plan hash value: 1344903509----------------------------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |----------------------------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 9 | 225 | 3 (0)| 00:00:01 || 1 | MAT_VIEW REWRITE ACCESS BY INDEX ROWID| VW_T_MATERIALIZEDVIEW | 9 | 225 | 3 (0)| 00:00:01 ||* 2 | INDEX RANGE SCAN | SYS_C0055952 | 9 | | 2 (0)| 00:00:01 |----------------------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):--------------------------------------------------- 2 - access("VW_T_MATERIALIZEDVIEW"."ID"<10)Note----- - 'PLAN_TABLE' is old version - dynamic sampling used for this statement (level=2)Statistics---------------------------------------------------------- 0 recursive calls 0 db block gets 5 consistent gets 0 physical reads 0 redo size 756 bytes sent via SQL*Net to client 500 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 9 rows processedTEST-orcl@DESKTOP-V430TU3>从执行计划可以看到,查询语句被自动重写为查询物化视图。
PostgreSQL
创建数据表,插入数据
[local]:5432 pg12@testdb=# drop table t_materializedview;ERROR: table "t_materializedview" does not existTime: 31.285 ms[local]:5432 pg12@testdb=# create table t_materializedview(id int primary key,c1 varchar(20));CREATE TABLETime: 194.505 ms[local]:5432 pg12@testdb=# [local]:5432 pg12@testdb=# insert into t_materializedview(id,c1) select x,'test'||x from generate_series(1,100000) as x;INSERT 0 100000Time: 600.401 ms[local]:5432 pg12@testdb=# insert into t_materializedview(id,c1) select x,'TEST'||x from generate_series(100001,200000) as x;INSERT 0 100000Time: 520.054 ms[local]:5432 pg12@testdb=#创建物化视图
[local]:5432 pg12@testdb=# drop materialized view vw_t_materializedview;ERROR: materialized view "vw_t_materializedview" does not existTime: 1.114 ms[local]:5432 pg12@testdb=# create materialized view vw_t_materializedview pg12@testdb-# as select * from t_materializedview where c1 like 'test%'; SELECT 100000Time: 302.380 ms[local]:5432 pg12@testdb=#查询数据
[local]:5432 pg12@testdb=# select * from vw_t_materializedview limit 10; id | c1 ----+-------- 1 | test1 2 | test2 3 | test3 4 | test4 5 | test5 6 | test6 7 | test7 8 | test8 9 | test9 10 | test10(10 rows)Time: 3.517 ms[local]:5432 pg12@testdb=# refresh materialized view vw_t_materializedview;REFRESH MATERIALIZED VIEWTime: 251.243 ms[local]:5432 pg12@testdb=# select * from vw_t_materializedview limit 10; id | c1 ----+-------- 1 | test1 2 | test2 3 | test3 4 | test4 5 | test5 6 | test6 7 | test7 8 | test8 9 | test9 10 | test10(10 rows)Time: 1.709 ms[local]:5432 pg12@testdb=# [local]:5432 pg12@testdb=# explain verbose select * from t_materializedview where c1 like 'test%' and id < 10; QUERY PLAN ---------------------------------------------------------------------------------------------------------- Index Scan using t_materializedview_pkey on public.t_materializedview (cost=0.42..8.60 rows=4 width=14) Output: id, c1 Index Cond: (t_materializedview.id < 10) Filter: ((t_materializedview.c1)::text ~~ 'test%'::text)(4 rows)Time: 2.732 ms[local]:5432 pg12@testdb=#PostgreSQL尚未实现基于物化视图的自动重写
参考资料
N/A
视图
数据
查询
功能
数据表
强大
参考资料
尚未
日志
语句
资料
参考
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
哈利波特不同服务器可以同宿舍吗
cdr复制粘贴出现服务器很慢
海外服务器加速器
天津网络安全保卫大队
电脑磁盘管理服务器
数据库技术APPT
山西麻将软件开发免费咨询
电脑在家办公链接的服务器
计算机考数据库有用吗
珠海市企业erp软件开发
计算机网络技术专升本分数线
高级表格如何读数据库
数据库的名字是显示在哪里
怀化游戏软件开发费用
网络安全综合治理学校
数据库能联网吗
河南ipfs服务器云主机
nba2k22服务器连接出现问题
建立健全数据库
腾讯云服务器关联代理商购买
学软件开发大学学什么专业
土地信息数据库的建立
佛山考试软件开发咨询
宝山区拼接led大屏服务器
java代理服务器原理
银川地理资源数据库
加油站风险数据库填报
易语言抓取网页返回数据库
网络安全督察通报
承德创巨网络技术有限公司