1 pg_ivm简介
1.1 项目地址
https://gitcode.com/gh_mirrors/pg/pg_ivm/?utm_source=artical_gitcode&index=bottom&type=card&&isLogin=1
1.2 注意事项
如果您是通过 rpm 或 deb 包安装的 PostgreSQL,您将需要安装开发包(例如,postgresql14-devel 或 postgresql-server-dev-14)。
重要提示: 如果您打算在非默认或自定义构建的 PostgreSQL 上使用
pg_ivm,请别忘了设置PG_CONFIG环境变量(使用make PG_CONFIG=...命令)或将pg_config命令的路径添加到PATH环境变量中。更多详情请参阅这里。
接着,执行创建扩展命令。
1.3 下载地址
1)github下载
git clone https://github.com/sraoss/pg_ivm.git
cd pg_ivm
make
make install
2)rpm下载与安装
下载地址
https://download.postgresql.org/pub/repos/yum/15/redhat/rhel-7.9-x86_64/

安装

2 pg_ivm使用
2.1 创建扩展
SELECT name, default_version,installed_version FROM pg_available_extensions where name ='pg_ivm';

 CREATE EXTENSION IF NOT EXISTS pg_ivm;
2.2 限制
目前,IMMV 的视图定义可以包含内连接、DISTINCT 子句、某些内置的聚合函数、FROM 子句中的简单子查询、EXISTS 子查询以及简单的公用表表达式(WITH 查询)。内连接(包括自连接)是被支持的,但外连接不支持。支持的聚合函数包括 count、sum、avg、min 和 max。其他聚合函数、包含聚合或 DISTINCT 子句的子查询、除 FROM 子句外的其他位置的子查询、窗口函数、HAVING、ORDER BY、LIMIT/OFFSET、UNION/INTERSECT/EXCEPT、DISTINCT ON、TABLESAMPLE、VALUES 以及 FOR UPDATE/SHARE 不能在视图定义中使用。
基表必须是简单表。视图、物化视图、继承父表、分区表、分区以及外部表不能被使用。
任何系统列都不能包含在视图定义查询中。 目标列表中不能包含以 __ivm_ 开头的列名。
视图中目标列表使用的数据类型必须有默认的操作符类以供 btree 访问方法使用。例如,json、xml 或 point 类型不能出现在目标列表中。
逻辑复制不支持,即当发布节点上的基表被修改时,基于这些基表定义的订阅节点上的 IMMV 不会被更新。
2.3 语法
使用 create_immv 函数来创建 IMMV。
create_immv(immv_name text, view_definition text) RETURNS bigint
2.4 例子
SELECT create_immv('sales_test4', 'select t1.*,t2.sku_code,t2.create_time ctime from ods.ods_goods_goods_spu_rt t1 inner join ods.ods_goods_goods_sku_rt t2 on t1.spu_code = t2.spu_code
where t1.tenant_id = 153755 and t2.tenant_id = 153755');
                    
                
 posted on 
                
            
        
浙公网安备 33010602011771号