そのフィールドが与えられた場合key
どちらの場合もインデックスが作成され、複雑さインデックス検索自体 非常に似ています。 a
の値として ハッシュ
になります 、およびインデックスツリーに格納されます。
全体的なパフォーマンスコストを探している場合、ハッシュバージョンでは、a
の値をハッシュするための追加の(無視できる)コストが発生します。 インデックスツリーの値と一致する前。 mongo / db/indexも参照してください。 /hash_access_method.h
また、ハッシュ化されたインデックスは、インデックスプレフィックス圧縮を利用できません( WiredTiger) 。インデックスプレフィックスの圧縮は、カーディナリティが低いデータセット(国など)や、電話番号、社会保障コード、地理座標などの繰り返し値を持つデータセットに特に効果的です。これは、複合インデックス に特に効果的です。 、ここで、最初のフィールドは2番目のフィールドのすべての一意の値で繰り返されます。
通常、範囲外の値をハッシュする理由はありません。シャードキーを選択するには、カーディナリティ<を考慮してください。 / a> 、頻度 、および変化率 値の。
ハッシュ化されたインデックスは、シャーディング
の特定のケースで一般的に使用されます。 。 シャードキー
の場合 値は
それが価値があるかどうかは、ユースケースによって異なります。カスタムハッシュ値は、ハッシュ値のクエリがカスタムハッシュコード、つまりアプリケーションを経由する必要があることを意味します。
組み込みのハッシュ関数を利用する利点は、ハッシュ化インデックスを使用してクエリを解決するときに、MongoDBがハッシュを自動的に計算することです。したがって、アプリケーションはハッシュを計算する必要はありません。