mongo复合索引

Wesley13
• 阅读 160

1、复合索引创建语法
        db.collection.createIndex( { : , : , ... } )
        同创建单键(列)索引一样,索引创建时需要指定每一个键索引的顺序
        多个键直接用逗号分隔
        索引创建语法可以参考:http://blog.csdn.net/leshami/article/details/53541978

2、复合索引的一些特性
        复合索引可以支持要求匹配多个键的查询
        复合索引每一个键的顺序非常重要,这将决定该索引在查询过程中能否被使用到
        复合索引支持前导(缀)列索引查询
        不能够创建基于哈希索引类型的复合索引
        任意复合索引字段不能超过31个

在关注关系的业务场景中,经常会取消关注和关注,这个操作是很频繁的,每次关注和取消我都要相应的将库中的关系添加或删除,之前是做了删除之前先查询以及防止重复提交,后来测试阶段发现防止重复添加会使正常的关注和取关操作无法执行;然后我取消防止重复提交的话,在高并发情况下会出现重复的数据;之后考虑通过mongo的复合唯一索引来对这个去重在java 中给对应的实体类加上注解

@CompoundIndexes({ @CompoundIndex(name = "xx名字",def = "{'xx':1,'xx':1}",unique = true) })

然后我进行了测试,发现连续同样的五条记录插进去,中间没有报任何错误,但是库中正好只有唯一一条,刚好符合我的需求;然后接着用并行流模拟高并发情况下,也并没有出现错误;我测试的是复合唯一索引,复合索引的话就另行测试吧。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
1年前
MySQL索引的索引长度问题
MySQL的每个单表中所创建的索引长度是有限制的,且对不同存储引擎下的表有不同的限制。在MyISAM表中,创建组合索引时,创建的索引长度不能超过1000,注意这里索引的长度的计算是根据表字段设定的长度来标量的,例如:createtabletest(idint,name1varchar(300),name2varchar(300),nam
Wesley13 Wesley13
1年前
MySQL创建索引
创建索引方法一:创建表时  CREATETABLE表名(字段名1数据类型完整性约束条件…,字段名2数据类型完整性约束条件…,UNIQUE|FULLTEXT|
Wesley13 Wesley13
1年前
MySQL Index
1、索引创建1)查看表中的索引,showindexfromtable;showindexesfromtable;2)我们一般都不在数据库层面限制外键,因为约束太多数据库压力太大,死锁产生的概率也会变大,但是关联字段肯定是会有的,这些关联字段都必须建立索引,因为外键都是为了关联查询的,连接条件最好有索引可用。3)经常出
Stella981 Stella981
1年前
Neo4j学习笔记(2)——手动索引和模式索引
和关系数据库一样,Neo4j同样可以创建索引来加快查找速度。在关系数据库中创建索引需要索引字段和指向记录的指针,通过索引可以快速查找到表中的行。在Neo4j中,其索引是通过属性来创建,便于快速查找节点或者关系。手动索引先来说一下怎样创建手动索引。创建索引采用显示创建,就像添加节点一样添加索引项,一个索引项标识的是一个节点或
Wesley13 Wesley13
1年前
MySQL数据库索引管理————(增删改查)
索引的概念数据库建立索引的原则查看索引语法格式示例显示信息蚕食描述普通索引概述创建普通索引创建方式示例删除索引删除索引的方式示例
Stella981 Stella981
1年前
Elasticsearch 映射操作
一、创建语法:PUT/索引库名称/_mapping/类型名称{"properties":{"字段名":{"type":类型,可以是text、keyword、long、short、date、integer、object等   "index":是否索引,默认为true 
Stella981 Stella981
1年前
ES中删除索引的mapping字段时应该考虑的点
1.创建新索引2.新索引创建新mapping3.原索引导出数据到新索引4.新索引创建原索引一致的别名5.删除原索引针对于第四步:这个就要用到索引别名了,如果你最开始建索引的时候没有考虑设计索引别名,那就杯具了。你可以把索引的名称设置成name\_v1 别名设置为name,然后代码里面访问搜索的时候连接的其实是别名na
Wesley13 Wesley13
1年前
Java面试通关要点汇总集之核心篇参考答案
核心篇数据存储MySQL索引使用的注意事项1.索引不会包含有NULL的列只要列中包含有NULL值,都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此符合索引就是无效的。2.使用短索引
Wesley13 Wesley13
1年前
MongoDB性能篇
一、索引MongoDB提供了多样性的索引支持,索引信息被保存在system.indexes中,且默认总是为\_id创建索引,它的索引使用基本和MySQL等关系型数据库一样。其实可以这样说说,索引是凌驾于数据存储系统之上的另一层系统,所以各种结构迥异的存储都有相同或相似的索引实现及使用接口并不足为奇。1.基础索引在字段age
Wesley13 Wesley13
1年前
SQL脚本优化
1.创建索引一.要尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引 (1)在经常需要进行检索的字段上创建索引,比如要按照表字段username进行检索,那么就应该在姓名字段上创建索引,如果经常要按照员工部门和员工岗位级别进行检索,那么就应该在员工部门和员工岗位级别这两个字段上创建索引。 (2)创建索引