sql - 如何在 postgresql 中使用带有数组列的 GIN 索引?
问题描述
我有一个看起来与此类似的表:
id uuid
ancestor_ids text[]
我需要执行一个查询来检索其中的第一个元素的祖先_ids 数组中的任何输入值的行。查询看起来像这样:
select * from table where ancestor_ids[1] in ('multiple', 'input', 'values');
ancestor_ids
查询工作正常,但鉴于我没有使用任何特殊运算符,我想知道向列添加索引是否会提高性能。是否可以优化查询?(表重新设计不是一种选择)
解决方案
如果它始终是第一个元素,则不需要 GIN 索引。标准的 B-Tree 可以:
create index on the_table ( (ancestor_ids[1]) );
推荐阅读
- python-3.x - 列堆叠到系列后的 MultiIndex DataFrame 排序顺序
- java - 在 doInBackground 之前调用 AsyncTask onPostExecute
- r - 有效替换 20k 潜在匹配中的字符串
- plantuml - 更改默认 PlantUML 皮肤选项
- google-cloud-platform - 在对象检测谷歌 API 中上传照片的问题
- node.js - docker-compose up with volumes - package.json的“没有这样的文件或目录”
- amazon-sqs - SQS 消息保持在进行中
- debian - 在纱线上找不到 pm2 命令
- python - 将多个 excel 文件中的数据合并和复制粘贴到另一个文件无法正常工作
- c++ - 为什么 Visual Studio 2019 在 Openmp 的 for-reduction 中不支持关键字“max”?