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