如何在PostgreSQL 9.2中索引JSON数据?

时间:2012-09-25 04:56:03

标签: json postgresql indexing postgresql-9.2

有谁知道如何在PostgreSQL 9.2中为JSON数据创建索引?

示例数据:

[
  {"key" : "k1", "value" : "v1"},
  {"key" : "k2", "value" : "v2"}
]

如果我想在所有密钥上编制索引怎么做?

感谢。

3 个答案:

答案 0 :(得分:3)

最好将hstore用于索引字段,至少目前是这样。

CREATE INDEX table_name_gin_data ON table_name USING GIN(data);

如果您对全文搜索感兴趣,也可以创建GIST索引。更多信息:http://www.postgresql.org/docs/9.0/static/textsearch-indexes.html

答案 1 :(得分:2)

目前没有直接索引JSON的内置函数。但是你可以使用基于函数的索引来实现,其中函数是用JavaScript编写的。

有关详细信息,请参阅此博客文章:http://people.planetpostgresql.org/andrew/index.php?/archives/249-Using-PLV8-to-index-JSON.html

还有另一篇博客文章,其中讨论了JSON以及它如何与JavaScript一起使用:http://www.postgresonline.com/journal/archives/272-Using-PLV8-to-build-JSON-selectors.html

答案 2 :(得分:0)

这个问题有点旧,但我认为选择的答案并不是理想的答案。要索引json(json文本中的属性值),我们可以使用带有PLV8的表达式索引(由@a_horse_with_no_name建议)。

Craig Kerstein在解释/演示方面表现出色:

http://www.craigkerstiens.com/2013/05/29/postgres-indexes-expression-or-functional-indexes/