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 访问了所有数据分区。
知识分享,需人人参与,看完请点赞留言,共同讨论进步