mongo复合索引
2018-04-27 17:06
183 查看
1、复合索引创建语法
db.collection.createIndex( { <field1>: <type>, <field2>: <type2>, ... } )
同创建单键(列)索引一样,索引创建时需要指定每一个键索引的顺序
多个键直接用逗号分隔
索引创建语法可以参考:http://blog.csdn.net/leshami/article/details/53541978
2、复合索引的一些特性
复合索引可以支持要求匹配多个键的查询
复合索引每一个键的顺序非常重要,这将决定该索引在查询过程中能否被使用到
复合索引支持前导(缀)列索引查询
不能够创建基于哈希索引类型的复合索引
任意复合索引字段不能超过31个
在关注关系的业务场景中,经常会取消关注和关注,这个操作是很频繁的,每次关注和取消我都要相应的将库中的关系添加或删除,之前是做了删除之前先查询以及防止重复提交,后来测试阶段发现防止重复添加会使正常的关注和取关操作无法执行;然后我取消防止重复提交的话,在高并发情况下会出现重复的数据;之后考虑通过mongo的复合唯一索引来对这个去重在java 中给对应的实体类加上注解
然后我进行了测试,发现连续同样的五条记录插进去,中间没有报任何错误,但是库中正好只有唯一一条,刚好符合我的需求;然后接着用并行流模拟高并发情况下,也并没有出现错误;我测试的是复合唯一索引,复合索引的话就另行测试吧。
db.collection.createIndex( { <field1>: <type>, <field2>: <type2>, ... } )
同创建单键(列)索引一样,索引创建时需要指定每一个键索引的顺序
多个键直接用逗号分隔
索引创建语法可以参考:http://blog.csdn.net/leshami/article/details/53541978
2、复合索引的一些特性
复合索引可以支持要求匹配多个键的查询
复合索引每一个键的顺序非常重要,这将决定该索引在查询过程中能否被使用到
复合索引支持前导(缀)列索引查询
不能够创建基于哈希索引类型的复合索引
任意复合索引字段不能超过31个
在关注关系的业务场景中,经常会取消关注和关注,这个操作是很频繁的,每次关注和取消我都要相应的将库中的关系添加或删除,之前是做了删除之前先查询以及防止重复提交,后来测试阶段发现防止重复添加会使正常的关注和取关操作无法执行;然后我取消防止重复提交的话,在高并发情况下会出现重复的数据;之后考虑通过mongo的复合唯一索引来对这个去重在java 中给对应的实体类加上注解
@CompoundIndexes({ @CompoundIndex(name = "xx名字",def = "{'xx':1,'xx':1}",unique = true) })
然后我进行了测试,发现连续同样的五条记录插进去,中间没有报任何错误,但是库中正好只有唯一一条,刚好符合我的需求;然后接着用并行流模拟高并发情况下,也并没有出现错误;我测试的是复合唯一索引,复合索引的话就另行测试吧。
相关文章推荐
- K8S博文索引
- Lua中强大的元方法__index详解
- Lua中__index和__newindex之间的沉默与合作
- 浅述SQL Server的聚焦强制索引查询条件和Columnstore Index
- mysql中key 、primary key 、unique key 与index区别
- SQL语句实现查询并自动创建Missing Index
- MySQL与Mongo简单的查询实例代码
- MySQL Index Condition Pushdown(ICP)性能优化方法实例
- PHP下 Mongodb 连接远程数据库的实例代码
- vue2.0移除或更改的一些东西(移除index key)
- 在vue中,v-for的索引index在html中的使用方法
- Jquery index()方法 获取相应元素索引值
- JQuery使用index方法获取Jquery对象数组下标的方法
- JQuery index()方法使用代码
- jQuery中index()的用法分析
- jQuery实现获取元素索引值index的方法
- Notice: Undefined index: page in E:\PHP\test.php on line 14
- php Undefined index和Undefined variable的解决方法
- SQL语句实现查询Index使用状况