PostgreSQL 9.2でJSONデータにインデックスを作成する方法を知っている人はいますか?
データ例:
[
{"key" : "k1", "value" : "v1"},
{"key" : "k2", "value" : "v2"}
]
すべてのキーにインデックスを付けたい場合は、その方法を教えてください。
ありがとう。
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(jsonテキスト内のプロパティ値)にインデックスを付けるために、PLV8(@a_horse_with_no_nameによって提案された)で式インデックスを使用できます。
Craig Kersteinは、次のことを説明/デモンストレーションするという素晴らしい仕事をしています。
http://www.craigkerstiens.com/2013/05/29/postgres-indexes-expression-or-functional-indexes/