Postgresql函数稳定态影响分区表分区剪枝

函数稳定态影响SQL 索引使用、分区剪枝。本文通过展示稳定态对于分区剪枝功能的影响。

一、构建测试例子

create table test_part1(id integer,part_date date,name text)

partition by range(part_date)

( partition part2023 values less than (to_date('20240101000000','YYYY-MM-DD HH24:MI:SS')),

partition part2024 values less than (to_date('20250101000000','YYYY-MM-DD HH24:MI:SS')),

partition part2025 values less than (to_date('20260101000000','YYYY-MM-DD HH24:MI:SS')),

partition part2026 values less than (to_date('20270101000000','YYYY-MM-DD HH24:MI:SS')) );

insert into test_part1 select generate_series(1,2000000),now() + random()*1000 ,md5(random());

这里构建了一个以时间为分区列的表。以下例子通过传入不同时间函数参数,验证分区剪枝情况。

二、函数稳定态与分区剪枝

先来看需要用到的两个函数的稳定态:

1、stable 函数可以使用分区剪枝

 

2、volatile 函数无法使用分区剪枝功能

 可以看到,SQL 访问了所有数据分区。

 

 

 

posted @ 2023-08-22 16:16  数据库集中营  阅读(29)  评论(0编辑  收藏  举报