【背景】
在使用ORACLE、MYSQL以及MongoDB数据库时,其中查询时经常遇到NULL的性能问题,例如Oracle的索引中不记录全是NULL的记录,MongoDB中默认索引中会记录全是...null的文档,MongoDB查询等于null时,表示索引字段对应值是null同时还包括字段不存在的文档.因为MongoDB是动态模式,允许每一行的字段都不一样,例如记录1中包括包括字段A等于1,记录2...主要性能在于回表过滤,理论上都满足覆盖查询条件,经过检索mongodb jira发现,这个是由于老的索引格式造成.从4.9版本开始,重新设计索引格式,只要索引是非multikey,
查询等于null可以使用覆盖查询....对于multikey索引,至少6.0还是不行.
2、 升级到5.0版本验证下能否实现覆盖查询
备注:升级5.0后使用覆盖查询,性能明细提升,响应时间从900ms下降到384ms.性能明显提升.第一个性能问题通过升级完美解决....这个例子中5300万耗时是38s.这个相对简单些,需要MongoDB 4.2版本才支持索引覆盖查询.