部分索引
部分インデックスを使用して、データベースのドキュメントのサブセットを使用してインデックスを作成します。 インデックス全体のサイズを小さくし、クエリを高速化し、データストレージのコストを削減します。
部分索引の作成
IBM Cloudant 照会では、partial_filter_selector フィールドを使用した部分索引をサポートしています。 partial_filter_selector には、 _インデックス時に_実行される標準的な IBM Cloudant クエリが含まれています。 セレクタにマッチしないドキュメントはインデックスに追加されない。
照会の例を以下に示します。
{
"selector": {
"status": {
"$ne": "archived"
},
"type": "user"
}
}
部分索引がない場合、この照会では、完全索引スキャンを実行して、状況が type ではない user:archived のすべての文書を検索する必要があります。 この状態が発生するのは、通常の索引を使用して連続する行を突き合わせることができ、
$ne 演算子ではそのことを保証できないためです。
レスポンスタイムを向上させるには、インデックス作成時に
status: { $ne: archived } を除外したインデックスを作成することができます。
partial_filter_selector 次の例に示す:
POST /db/_index HTTP/1.1
Content-Type: application/json
Content-Length: 144
Host: localhost:5984
{
"index": {
"partial_filter_selector": {
"status": {
"$ne": "archived"
}
},
"fields": ["type"]
},
"ddoc" : "type-not-archived",
"type" : "json"
}
部分インデックスは、 フィールドで指定されない限り、クエリプランナによって使用されません。
use_index 従って、元の問い合わせを変更する必要があります:
{
"selector": {
"status": {
"$ne": "archived"
},
"type": "user"
},
"use_index": "type-not-archived"
}
技術的には、照会セレクターの status フィールドにフィルターを含める必要はありません。 部分索引により、この値は常に true になります。 ただし、フィルターを含めると、セレクターの意図がより明確になります。 また、将来の照会計画立案の改善 (例えば、部分索引の自動選択) を利用しやすくなります。