【sql】PostgreSQL物化视图表使用案例

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 【sql】PostgreSQL物化视图表使用案例

代码

创建物化视图表


create materialized view sel_eth_txn_info_recent_30_day as
select
  *
from
  sel_eth_txn_info set2  
where
  date(to_timestamp(block_time / 1000)::text) >= CURRENT_DATE - interval '30 days'
with no data;


指定索引

CREATE UNIQUE INDEX sel_eth_txn_info_recent_30_day_id ON sel_eth_txn_info_recent_30_day(id);

更新数据

REFRESH MATERIALIZED VIEW CONCURRENTLY sel_eth_txn_info_recent_30_day; -- 边刷新、边查
REFRESH MATERIALIZED VIEW sel_eth_txn_info_recent_30_day;

建立索引 & 建立触发器

---
CREATE INDEX  ON public.sel_eth_txn_info_recent_30_day USING btree (block_time);
CREATE INDEX  ON public.sel_eth_txn_info_recent_30_day USING btree (contract_address);
CREATE INDEX  ON public.sel_eth_txn_info_recent_30_day USING btree (from_address);
CREATE INDEX  ON public.sel_eth_txn_info_recent_30_day USING btree (to_address);
CREATE INDEX  ON public.sel_eth_txn_info_recent_30_day USING btree (transaction_hash);
CREATE INDEX  ON public.sel_eth_txn_info_recent_30_day USING btree (transaction_type);
CREATE INDEX  ON public.sel_eth_txn_info_recent_30_day USING btree (value);
CREATE INDEX  ON public.sel_eth_txn_info_recent_30_day USING btree (block_number);
---
CREATE OR REPLACE FUNCTION update_sel_eth_txn_info_recent_30_day()
RETURNS TRIGGER AS $$
BEGIN
  IF (TG_OP = 'INSERT') THEN
    IF (NEW.block_time / 1000 >= CURRENT_DATE - INTERVAL '30 days') THEN
      INSERT INTO sel_eth_txn_info_recent_30_day VALUES (NEW.*);
    END IF;
    -- delete expired data
    DELETE FROM sel_eth_txn_info_recent_30_day WHERE block_time / 1000 < CURRENT_DATE - INTERVAL '30 days';
  ELSIF (TG_OP = 'UPDATE') THEN
    IF (NEW.block_time / 1000 >= CURRENT_DATE - INTERVAL '30 days') THEN
      UPDATE sel_eth_txn_info_recent_30_day SET block_time = NEW.block_time, 
    block_number = NEW.block_number,
    transaction_hash = NEW.transaction_hash,
    contract_address = NEW.contract_address,
    from_address = NEW.from_address,
    value = NEW.value,
    transaction_type = NEW.transaction_type WHERE id = NEW.id;
    ELSE
      DELETE FROM sel_eth_txn_info_recent_30_day WHERE id = NEW.id;
    END IF;
  ELSIF (TG_OP = 'DELETE') THEN
    DELETE FROM sel_eth_txn_info_recent_30_day WHERE id = OLD.id;
  END IF;
  RETURN NULL;
END;
$$ LANGUAGE plpgsql;
---
CREATE TRIGGER update_sel_eth_txn_info_recent_30_day
AFTER INSERT OR UPDATE OR DELETE ON sel_eth_txn_info
FOR EACH ROW EXECUTE PROCEDURE update_sel_eth_txn_info_recent_30_day();
---
REFRESH MATERIALIZED VIEW sel_eth_txn_info_recent_30_day;



相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
23天前
|
SQL 监控 关系型数据库
实际应用中监控和诊断SQL语句执行情况的具体案例
实际应用中监控和诊断SQL语句执行情况的具体案例
|
2天前
|
SQL Java 数据库连接
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
8 2
|
2天前
|
关系型数据库 MySQL 数据库
关系型数据库MySQL开发要点之多表设计案例详解代码实现
关系型数据库MySQL开发要点之多表设计案例详解代码实现
10 2
|
9天前
|
SQL 存储 关系型数据库
关系型数据库中的SQL Server
【6月更文挑战第11天】
44 3
|
15天前
|
运维 Cloud Native 关系型数据库
云原生数据仓库AnalyticDB产品使用合集之PostgreSQL版是否直接支持实时物化视图
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
20天前
|
SQL 关系型数据库 数据库
nacos 2.2.3版本 查看配置文件的历史版本的接口 是针对MySQL数据库的sql 改成postgresql后 sql语句报错 该怎么解决
在Nacos 2.2.3中切换到PostgreSQL后,执行配置文件历史版本分页查询出错,因`LIMIT 0, 10`语法不被PostgreSQL支持,需改为`LIMIT 10 OFFSET 0`。仅当存在历史版本时报错。解决方案是调整查询SQL以兼容PostgreSQL语法。
|
19天前
|
SQL 关系型数据库 MySQL
MySQL数据库——索引(3)-索引语法(创建索引、查看索引、删除索引、案例演示),SQL性能分析(SQL执行频率,慢查询日志)
MySQL数据库——索引(3)-索引语法(创建索引、查看索引、删除索引、案例演示),SQL性能分析(SQL执行频率,慢查询日志)
18 2
|
24天前
|
关系型数据库 PostgreSQL
postgresql如何将没有关联关系的两张表的字段合并
【6月更文挑战第2天】postgresql如何将没有关联关系的两张表的字段合并
22 3
|
27天前
|
缓存 算法 关系型数据库
SQL DB - 关系型数据库是如何工作的
• 绿:O(1)或者叫常数阶复杂度,保持为常数(要不人家就不会叫常数阶复杂度了)。 • 红:O(log(n))对数阶复杂度,即使在十亿级数据量时也很低。 • 粉:最糟糕的复杂度是 O(n^2),平方阶复杂度,运算数快速膨胀。 • 黑和蓝:另外两种复杂度(的运算数也是)快速增长。 如果要处理2000条元素: • O(1) 算法会消耗 1 次运算 • O(log(n)) 算法会消耗 7 次运算 • O(n) 算法会消耗 2000 次运算
|
12天前
|
SQL Java 数据库连接
MyBatis SQL 批量更新(代码➕案例)
MyBatis SQL 批量更新(代码➕案例)
33 0