mongodb 联合索引和单个字段索引性能那个好些。
为情所困
为情所困 2017-05-02 09:22:03
0
1
791

现在遇到一个性能问题,解决办法就是给字段加索引,现在纠结的是字段组合索引还是单个索引查询效率问题?

场景
现在查询字段是parentId,key ,两个字段同时查询。

现在见索引的方案是
1 分别给 parentId,key添加索引

2 建一个组合索引 {parentId:1,key:1}这样的方式:

这两个查询性能是不是差不多啊?

求证

为情所困
为情所困

Antworte allen(1)
伊谢尔伦

索引效率来说肯定是联合索引效率高,很多时候如果用多个字段查询应该考虑用联合索引。
但是事情也没有完全的绝对,也要考虑到索引的开销。
以你的条件为例,假设key能够唯一确定一条记录,parentId是不是就没有必要加上了呢?
退一步,即使key不能唯一确定一条,如果它能够把结果集确定在一定的小范围内,比如5条记录,10条记录,那parentId这个条件无非就是在这10条记录内再扫一遍寻找合适的记录,比起把它加进索引中造成的写入和存储、内存开销,我可能会选择根本不把它放进联合索引里。
一个条件能过滤掉的记录越多,我们说它的“选择性”(selectivity)越好。一般情况下,我们在建立索引的时候都要把选择性越好的条件放前面,选择性差的放后面。差到一定程度就别放进来了。
这其实是一个时间和空间的平衡。放进索引里的条件省时间(包括CPU时间,查询时间)费空间(包括存储空间,内存空间);不放进索引里的条件费时间,省空间。大部分时候我们是期望得到前者的,什么时候选择后者就看你自己对实际情况的评估了。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!