我尝试搜索Mongo文档,但无法真正找到有关唯一索引的查询是否比非唯一索引上的查询更快的详细信息(给定相同的数据)
所以我理解一个独特的指数将具有高选择性和良好的性能。但是,如果两个字段的串联是唯一的,那么非唯一复合索引的执行速度会比唯一的复合索引慢吗?
我假设唯一索引可以减慢插入速度,因为必须验证唯一性。但是,如果有的话,一个独特的索引的读取性能提升真的值得吗?
答案 0 :(得分:15)
源树的快速grep似乎表明唯一索引仅用于插入,因此返回一个文档的查询,索引是否唯一之间不应有任何性能优势或损害。 / p>
MongoDB索引是作为btree实现的,因此无论索引是否唯一,对它们执行任何不同的操作都没有任何逻辑意义。
答案 1 :(得分:0)
我对这个话题进行了自己的小型研究。我在一个集合中生成了500,000条记录(随机生成的字符串),并使用explain()语句尝试了几个查询。
然后我确保了一个唯一索引,并再次尝试了一些其他查询:
正如你所看到的,在添加索引之后,时间消耗从~276ms减少到0ms!因此,即使索引是唯一的,它也会影响(以积极的方式)查找查询。