You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

PostgreSQL分区剪枝和btree_gin索引存在冲突

在PostgreSQL中,分区表是一种将庞大数据集分解为更小和更可管理数据块的方法。分区表可在相同的表结构中存储大量数据并获得更优秀的性能。常见的分区策略包括按范围、按列表和按哈希函数。有时,使用btree_gin索引时会出现分区剪枝失败的情况。

以下代码是一个示例表的定义,它使用按范围的分区策略:

CREATE TABLE order_lineitems ( id SERIAL, order_id INT NOT NULL, item_id INT NOT NULL, quantity INT NOT NULL, total_price NUMERIC(10,2) NOT NULL, created_at TIMESTAMPTZ NOT NULL DEFAULT now() ) PARTITION BY RANGE(created_at);

-- 创建两个分区 CREATE TABLE order_lineitems_2019 ( CHECK(created_at >= '2019-01-01' AND created_at < '2020-01-01') ) INHERITS (order_lineitems);

CREATE TABLE order_lineitems_2020 ( CHECK(created_at >= '2020-01-01' AND created_at < '2021-01-01') ) INHERITS (order_lineitems);

现在,我们使用btree_gin索引来加速查询,例如:

CREATE INDEX ix_order_lineitems_order_id ON order_lineitems USING GIN (order_id);

然后,我们尝试执行以下查询:

SELECT * FROM order_lineitems WHERE order_id = 123 AND created_at BETWEEN '2020-01-01' AND '2021-01-01';

我们期望PostgreSQL只扫描order_lineitems_2020分区,但实际上PostgreSQL扫描了整个表。

解决方法是在btree_gin索引上添加created_at列作为它的第二列,例如:

CREATE INDEX ix_order_lineitems_order_id_created_at ON order_lineitems (order_id, created_at) USING GIN;

这将修复分区剪枝问题,查询现在只扫描order_lineitems_2020分区,执行速度更快。同时,它也适用于其他类似的查询。

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

集简云本周更新:新增应用百家号,MangoDB,PostgreSQL;更新应用企业微信,用友Yonsuite,抖音企业号等

=&rk3s=8031ce6d&x-expires=1715617207&x-signature=PiRqFuik1u3Cmd8xXe%2BpVvCgKuE%3D) **本周****更新概要** * 新增集成应用:百家号* 新增集成应用:MangoDB* 新增集成应用:PostgreSQL*... (https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/89a70157cf604db58035dee7a3c9f380~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1715617207&x-signature=WK5w8gINBJB%2FmuErkcTOV4...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

PostgreSQL分区剪枝和btree_gin索引存在冲突 -优选内容

预检查项(PostgreSQL)
数据库传输服务 DTS 创建或配置 PostgreSQL 的迁移或同步任务时,会先对数据库进行各项检查。本文介绍检查项的详细信息。 检查项 数据库类型 检查范围 级别 检查内容 备注 数据库连通性检查 源库 目标库 所有迁移... tree pg_buffercache pg_freespacemap pg_pathman pg_prewarm pg_stat_statements pg_trgm pgaudit pgcrypto pgnodemx pgrouting pgrowlocks pgstattuple plpgsql plr postgis postgis_raster postgis_sfcgal post...
支持的插件列表
本文列出了云数据库 PostgreSQL 版的各版本所支持的插件及插件版本。 插件名 PostgreSQL 13 PostgreSQL 12 PostgreSQL 11 描述 address_standardizer 3.2.5 3.1.4 3.1.4 基于 PAGC 标准的地名标准化插件。 address_standardizer_data_us 3.2.5 3.1.4 3.1.4 基于 PAGC 标准的地名标准化(美国)数据插件。 bloom 1.0 1.0 1.0 提供一种基于布鲁姆过滤器的索引访问方法。 btree_gin 1.3 1.3 1.3 提供一个为多种数据类型和所有 enum 类...
集简云本周更新:新增应用百家号,MangoDB,PostgreSQL;更新应用企业微信,用友Yonsuite,抖音企业号等
=&rk3s=8031ce6d&x-expires=1715617207&x-signature=PiRqFuik1u3Cmd8xXe%2BpVvCgKuE%3D) **本周****更新概要** * 新增集成应用:百家号* 新增集成应用:MangoDB* 新增集成应用:PostgreSQL*... (https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/89a70157cf604db58035dee7a3c9f380~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1715617207&x-signature=WK5w8gINBJB%2FmuErkcTOV4...
化学分子计算检索(RDKit)
RDKit 是一款化学信息学开源工具包,基于机器学习方法生成化合物指纹(fingerprint),用于化合物子结构查询、化合物结构相似性计算。 使用限制仅支持 PostgreSQL 13 版本实例使用 RDKit 插件,插件的版本需为 3.8。 使... postgres= select dice_sml(morganbv_fp('C1C(OC2=CC(=CC(=C2C1=O)))'::mol), morganbv_fp('c1cccnc1'::mol)); dice_sml---------- 0.125(1 row) 索引RDKit 支持 btree 索引、gist 索引和 gin 索引。下面以 bfp...

PostgreSQL分区剪枝和btree_gin索引存在冲突 -相关内容

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询