0

コレクション内のすべてのドキュメントに新しいフィールドを挿入しようとしています。「user_id」フィールドに昇順のインデックスがあります。

a) インデックスの恩恵を受けるには、更新/挿入されるフィールドをインデックスに含める/変換する必要がありますか? b)また、この場合、範囲操作を行わないことを考えると、ハッシュインデックスのパフォーマンスが向上します。

db.collA.update(  { user_id: 123 }
                , { $set : { newfield : "something" } }
                , { multi:true} ) 
4

1 に答える 1

0

質問のパート A への回答: いいえ。既存のドキュメントのインデックス付き属性を挿入または更新すると、実際にはインデックスのパフォーマンスの問題が発生する可能性があります。これを大規模なバッチで実行する場合は、操作後にインデックスを再作成または修復する必要があります。

パート B: いいえ。標準のインデックス タイプは、このユース ケースをうまくカバーします。「user_id」が本当にドキュメントを識別する場合は、それをドキュメントの「_id」にすることを検討できますが、これはやや高度な設計上の決定であり、コレクションに影響を与えます (ポジティブとネガティブの両方)。

于 2013-03-25T23:25:34.733 に答える