有誰知道如何在PostgreSQL 9.2中創建JSON數據的索引?如何在PostgreSQL 9.2中對JSON數據編制索引?
示例數據:
[
{"key" : "k1", "value" : "v1"},
{"key" : "k2", "value" : "v2"}
]
說,如果我想在所有的鍵索引如何做到這一點?
謝謝。
有誰知道如何在PostgreSQL 9.2中創建JSON數據的索引?如何在PostgreSQL 9.2中對JSON數據編制索引?
示例數據:
[
{"key" : "k1", "value" : "v1"},
{"key" : "k2", "value" : "v2"}
]
說,如果我想在所有的鍵索引如何做到這一點?
謝謝。
你好得多使用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
目前沒有內置的函數來直接索引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
但在我的情況 - 我需要索引一切在json對象中。有沒有辦法做到這一點? – ankurvsoni
@ankurvsoni:不,我不這麼認爲。 –
請注意,自9.3以來[JSON函數和運算符](http://www.postgresql.org/docs/9.3/static/functions-json.html)。 – dukedave
這個問題有點老,但我認爲選定的答案不是真正的理想之一。爲了索引json(json文本中的屬性值),我們可以使用PLV8的表達式索引(由@a_horse_with_no_name建議)。
克雷格Kerstein做了解釋/展示了偉大的工作:
http://www.craigkerstiens.com/2013/05/29/postgres-indexes-expression-or-functional-indexes/
是否有一個原因,爲什麼你存儲平原JSON,而不是分成表中的列?你有什麼理由不接受答案? – Ian
我正在評估JSON類型支持PostgreSQL 9.2,因此需要。我沒有看到禁用接收答案的設置?有沒有這樣的事情? – ankurvsoni
也許看看:http://people.planetpostgresql.org/andrew/index.php?/archives/249-Using-PLV8-to-index-JSON.html – Ian