Update MongoDB_索引.md

This commit is contained in:
heibaiying 2020-03-23 16:04:31 +08:00 committed by GitHub
parent ea03a752bc
commit b02e1c0470
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -132,11 +132,11 @@ db.user.createIndex( { name: -1,birthday: 1} )
所以应该尽量避免创建冗余的索引,冗余索引会导致额外的性能开销。即如果你创建了索引 `{ name: -1, birthday: 1} `,那么再创建 `{name:-1}` 索引,就属于冗余创建。 所以应该尽量避免创建冗余的索引,冗余索引会导致额外的性能开销。即如果你创建了索引 `{ name: -1, birthday: 1} `,那么再创建 `{name:-1}` 索引,就属于冗余创建。
对于复合索引还需要注意它在排序上的限制,例如索引 `{a1, b-1}` 支持 `{a1, b-1}``{a-1, b1}` 形式的排序查询,但不支持 `{a - 1, b-1} ` 或 `{a1, b1}` 的排序查询。即字段的排序规则要么与索引键的排序规则完全相同,要么完全相反,此时才能进行双向遍历查找。 对于复合索引还需要注意它在排序上的限制,例如索引 `{a1, b-1}` 支持 `{a1, b-1}``{a-1, b1}` 形式的排序查询,但不支持 `{a-1, b-1} ` 或 `{a1, b1}` 的排序查询。即字段的排序规则要么与索引键的排序规则完全相同,要么完全相反,此时才能进行双向遍历查找。
### 2.3 多键索引 ### 2.3 多键索引
如果索引包含类型为数组的字段MongoDB 会自动为数组中的每个元素创建单独的索引条目这就是多键索引。MongoDB 使用多键索引来优化查询存储在数组中的内容。创建示例如下: 如果索引包含类型为数组的字段MongoDB 会自动为数组中的每个元素创建单独的索引条目这就是多键索引。MongoDB 使用多键索引来优化查询存储在数组中的内容,示例如下:
```shell ```shell
db.user.createIndex( { Hobby: 1 } ) db.user.createIndex( { Hobby: 1 } )
@ -144,7 +144,7 @@ db.user.createIndex( { Hobby: 1 } )
### 2.4 哈希索引 ### 2.4 哈希索引
为了支持基于哈希分片MongoDB 提供了哈希索引,通过对索引值进行哈希运算然后计算出所处的分片位置。语法如下: 为了支持哈希分片MongoDB 提供了哈希索引,通过对索引值进行哈希运算然后计算出所处的分片位置。语法如下:
```shell ```shell
db.collection.createIndex( { _id: "hashed" } ) db.collection.createIndex( { _id: "hashed" } )
@ -275,7 +275,7 @@ db.user.dropIndex("name_-1")
db.user.dropIndex({ name: -1,birthday: 1}) db.user.dropIndex({ name: -1,birthday: 1})
``` ```
如果想要删除全部的索引,则可以调用 `dropIndexes` 方法,需要注意的是建立在 `_id` 上的默认索引是不会被删除的 如果想要删除全部的索引,则可以调用 `dropIndexes` 方法,需要注意的是建立在 `_id` 上的默认索引是不会被删除的
```shell ```shell
db.collection.dropIndexes() db.collection.dropIndexes()