如何在PostgreSQL中的JSON字段上创建索引

如何在PostgreSQL中的JSON字段上创建索引,postgresql,Postgresql,我请求您帮助为下面在PostgreSQL上查询的JSON字段创建索引。在我的代码中,这个字段在WHERE子句中使用,它需要索引来加速查询 SELECT ((prime_data ->> 'prof'::text)::json) ->> 'find'::text AS prof_find FROM prof_table; 我已经尝试了这个gin索引,因为它是正常的,不处理这个JSON字段,但是运气不好 create index idx_prof_find on

我请求您帮助为下面在PostgreSQL上查询的JSON字段创建索引。在我的代码中,这个字段在WHERE子句中使用,它需要索引来加速查询

SELECT ((prime_data ->> 'prof'::text)::json) ->> 'find'::text AS prof_find 
FROM prof_table;
我已经尝试了这个gin索引,因为它是正常的,不处理这个JSON字段,但是运气不好

create index idx_prof_find 
   on prof_table using gin(((prime_data ->> 'prof'::text::json) ->> 'find'::text));

您的查询没有WHERE子句,因此没有索引将有助于加快
((prime\u data->'prof'::text)::json)
可以简化为
(prime\u data->'prof')
无需先将其提取为
文本
,然后将其转换回
json
。因此,整个表达式可以简化为
prime_data->'prof'->'find'
prime_data#>'{prof,find}'
您好,谢谢您的推荐。我想澄清一下,整个字段值都在WHERE子句中用于大型查询。这就是在这个字段上创建索引的原因“((prime_data->>‘prof’::text)::json)->>‘find’::text”但是,我没有在这里粘贴完整的查询,因为我只需要在上面的列上创建一个索引。