Like RDBMS Systems MongoDB also provide Indexes to improve it's performance to process the query quicker and return the resultset. Mongo supports different type of indexes such as SingleKey, Compound, MultiKey, PartialKey and Text Indexes. We will look into these ones one by one.
Starting with Simple Index or One Key Index which use only one key from the collection/document [quivalent as Table/Row in RDBMS systems], Let's see how -
Mongo Shell Command: db.<collectionName>.createIndex({<field>:<direction>})
pyMongo Command: db.<collectionName>.create_index([(<field>, <direction>)
Let's analyze the impact of Index creation on Query Performance, first via mongo shell, second in python -
In MongoShell:
In our example, we are taking the collection 'people' as an example which has the field 'last_name'
db.people.find({last_name:'Tucker'}).explain('executionStats')
The above command will generate the executions stats for a query where last_name == Tuker .
as the execution plan shows, mongoDB scanned the whole collection (total 50747 documents for fetching 65 records) to fetch the result which is costly when your collection is big.
Now, Creating a Simple Index or Single Key Index
db.people.createIndex({"last_name":1})
Now, querying again the same -
db.people.find({last_name:'Tucker'}).explain('executionStats')
Single Key Index can be used in below scenarios -
- Querying on the range of Indexed Key values
- Querying on selected values of Indexed Key
Advantage:
- Returned result will be sorted by Index Key, no need to put a sort operation if sorting on the index key
- Index key can be used in any sort order - Ascending or Descending
Consideration while Designing Single Key Index:
- Do not create Single Key Index on each field available on collections, it will slow down the performance of select and write query both.
Facebook Page Facebook Group Twitter Feed Google+ Feed Telegram Group