Introduction to Indexes
index 最佳建立順序
精確匹配 > 排序條件 > 範圍匹配
equality before range
equality before sorting
- Indexes is try to solve slow queries
- b-tree data structure
- Indexes increase the speed of read but decrease write, update and delete performance
Single Field Indexes
- Simplest indexes in MongoDB
- db.<collection>.createIndex({<field>: <direction>})
- Key features
- Keys from only one field
- Can find a single value for the indexed field
- Can find a range of values
- Can use dot notation to index field in subdocuments
- Can be used to find several distinct values in a single query
We should never index on the field that point to sub document, becuase doing so we'd have to query on the entire subdocument.
Sorting with Indexes
Method for sorting
When sorting with a single field index, sort either ascending or descending regardless of the pyhsical ordering of the index keys
Querying on Compound Indexes
- index on two or more fields
- There can be no more than 32 fields in a compound index
Index Prefix
Multikey Indexes
- Index on a field that is an array, cuz for each entry in array the server will create a seperate index key.
- Multikey indexes can be constructed over arrays that hold both scalar values (e.g. strings, numbers) and nested documents
Partial Indexes
only index the documents in a collection that meet a specified filter expression. By indexing a subset of the documents in a collection, partial indexes have lower storage requirements and reduced performance costs for index creation and maintenance.
Sparse Indexes
Sparse indexes only contain entries for documents that have the indexed field, even if the index field contains a null value
Text Indexes
A collection can have at most one text index.
- Create index keys for each word of string in field
- e.g "MongoDB long sleeve T-shirt"
- mongodb
- long
- sleeve
- t
- shirt
- Case insensitive
Collation
Collation allows users to specify language-specific rules for string comparison, such as rules for lettercase and accent marks.