开发者

MongoDB: Two-field index vs document field index

开发者 https://www.devze.com 2023-03-06 17:16 出处:网络
I need to index a collection by two fields (unique index), say field1 and field2. What\'s better approach in terms of performance:

I need to index a collection by two fields (unique index), say field1 and field2. What's better approach in terms of performance:

  1. Create a regular two-column index

    -or -

  2. Combine those two fields in a single document field {field1 : value, field2 : value2} an开发者_JS百科d index that field?

Note: I will always be querying by those two fields together.


You can keep the columns separate and create a single index that will increase performance when querying both fields together.

db.things.ensureIndex({field1:1, field2:1});

http://www.mongodb.org/display/DOCS/Indexes#Indexes-CompoundKeysIndexes

Having the columns in the same column provides no performance increases, because you must index them the same way:

db.things.ensureIndex({fields.field1:1, fields.field2:1});

http://www.mongodb.org/display/DOCS/Indexes#Indexes-EmbeddedKeys

Or you can index the entire document

db.things.ensureIndex({fields: 1});

http://www.mongodb.org/display/DOCS/Indexes#Indexes-DocumentsasKeys

There could be a possible performance increase, but doubtfully very much. Use the test database, create test data and benchmark some tests to figure it out. We would love to hear your results.


I'd create a compound index over both fields. This'll take up less disk space because you won't need to store the extra combined field, and give you the bonus of an additional index over the first field, i.e. an index over { a:1, b:1 } is also an index over { a:1 }.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号