物化视图功能验证

         物化视图(Materialized View)和视图(View)类似,也是一个视图名字对应一个SQL查询查询语句。不同之处在于:物化视图定义时使用了额外的关键字materialized, 它把结果集保存在起来,查询的时候直接读取保存的结果集,而不必扫描原始表。物化视图的结果集(即物化视图自己的数据)的存储和扫描方式和普通表的方式相同。

创建测试表

---- 创建测试表
drop table if exists DIM_OFFER;
create table DIM_OFFER
(
    OFFER_ID numeric(20) DEFAULT NULL,
    OFFER_TYPE varchar(100) DEFAULT NULL,
    PAY_TYPE varchar(2) DEFAULT NULL,
    TRADEMARK varchar(20) DEFAULT NULL,
    BUSI_TYPE varchar(6) DEFAULT NULL,
    OFFER_PLAN_TYPE varchar(6) DEFAULT NULL,
    PROD_SPECID varchar(20) DEFAULT NULL,
    PACKED_FLAG varchar(6) DEFAULT NULL,
    IS_GLOBAL varchar(6) DEFAULT NULL,
    DAILY_EFFECT varchar(6) DEFAULT NULL,
    STOP_DISPOSE varchar(6) DEFAULT NULL,
    MODIFY_DATE varchar(20) DEFAULT NULL,
    MODIFIER varchar(20) DEFAULT NULL,
    CREATE_DATE varchar(20) DEFAULT NULL,
    CREATER varchar(20) DEFAULT NULL,
    DEL_FLAG varchar(2) DEFAULT NULL,
    PRIMARY KEY(OFFER_ID)
);

select create_reference_table('DIM_OFFER');

创建物化视图

---- 创建物化视图 

SELECT run_command_on_workers($cmd$
    drop MATERIALIZED VIEW if exists dim_offer_v;
    create MATERIALIZED VIEW dim_offer_v 
    AS 
    select OFFER_ID,OFFER_TYPE,PAY_TYPE,TRADEMARK,BUSI_TYPE,OFFER_PLAN_TYPE,PROD_SPECID from DIM_OFFER;
$cmd$);

物化视图功能验证_第1张图片

创建索引

SELECT run_command_on_workers($cmd$
    create unique index index_dim_offer_v_offer_id ON dim_offer_v ( OFFER_ID );
$cmd$);

物化视图功能验证_第2张图片

加载数据

---- 导入数据

\COPY DIM_OFFER FROM '/home/postgres/work/Predeal/data/bak/offer.20221210.csv' WITH (DELIMITER ',');

刷新物化视图

---- 刷新物化视图
SELECT run_command_on_workers($cmd$
    REFRESH MATERIALIZED VIEW concurrently dim_offer_v with data;
$cmd$);

物化视图功能验证_第3张图片

删除数据后视图更新验证

删除一条数据

物化视图功能验证_第4张图片

更新视图

物化视图功能验证_第5张图片

查询视图数据是否删除

物化视图功能验证_第6张图片

你可能感兴趣的:(postgresql,citus)