You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL如何高效筛选含多个指定元素任意一个的JSONB数组

更优实现方式

你不需要手动拼接多个OR条件,直接使用PostgreSQL jsonb类型原生支持的?|操作符即可,逻辑和你原有写法完全等价,执行效率更高,语句也更简洁:

SELECT * FROM leadtime.test
WHERE name ?| ARRAY['abc', '132', '456'];

?|操作符的作用是判断左侧jsonb值是否包含右侧文本数组中的任意一个元素,正好匹配你的校验需求。

性能优化建议

如果表的数据量较大,你可以为name字段创建GIN索引,?|操作符可以直接利用该索引大幅降低查询耗时:

CREATE INDEX idx_test_name_gin ON leadtime.test USING GIN (name);

相比你原来多个OR拼接的写法,原生操作符的执行逻辑更紧凑,查询优化器可以生成更高效的执行计划,配合索引时性能差距会非常明显。

注意:该写法仅适用于你当前存储的「顶层元素为字符串的jsonb数组」场景,和你提供的测试数据结构完全适配,返回结果和原有写法一致。

内容的提问来源于stack exchange,提问作者Chau Loi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 11:27:19