【发布时间】:2021-07-22 04:52:42
【问题描述】:
我的表 (table) 有一个 JSONB 字段 (data),其中包含一个带有数组的字段,我在其中存储标签 (tags)。
我使用如下表达式查询该表:
SELECT * FROM table WHERE data->'tags' @? '$[*] ? (@ like_regex ".*(foo|bar).*" flag "i");
有了这样的用例,我有办法索引data->'tags' 数组以加快查询速度吗?还是我应该将tags 数组从 JSONB 字段中移出并移入 TEXT[] 字段并为其编制索引?
我已经试过了:
CREATE INDEX foo ON tbl USING GIN ((data->'tags') jsonb_path_ops);
但它不起作用:https://gist.github.com/vkaracic/a62ac917d34eb6e975c4daeefbd316e8
【问题讨论】:
-
在只有一行的表上测试索引是完全没有意义的。
Seq Scan永远是这么小的桌子的最佳选择。您需要用更多数据(“数十万”)填充它来测试索引的效率
标签: postgresql indexing jsonb