PostgreSQL 性能优化存储过程
项目背景:A系统同步B系统数据
实现过程:
A.系统数据以a表a_CVS文件存储在cos服务器上
B.系统daily job
i. 下载csv文件,并将cvs文件导入ods表中
ii. 运行ETL代码,从view中抽取数据加载导相关表中
抽取view中
- 同种数据存在多条,分组后创建辅助字段row_number()在根据查找最准确的一条。例:
drop view if exists vw_hco;
create or replace view vw_hco
as
select row_number() over(partition by code order by status) as rn,t.*
from
( select * from ** where **
) t;
2.创建、索引、view-》表
view视图:
物化视图+索引:
create materialized view vwm_hco as select * from vw_hco;
create index idx_vwm_hco_code on vwm_hco(code);
materialized view相当于将数据在硬盘保存一份,可以加索引来提高查找速度。但是 materialized view 保证不能和表实时同步,需要自己定时同步数据。
普通的table表:空间换时间
临时表:可作为临时使用的中间表来进行转化
CREATE TEMP TABLE IF NOT EXISTS stock_move_smy AS
select product_id,location_id,sum(quant) as quant from
(
select</