gpt4 book ai didi

MongoDB 搜索 "null"是否比搜索 "does not exist"更快?

转载 作者:可可西里 更新时间:2023-11-01 09:37:33 24 4
gpt4 key购买 nike

我的理解是查询 null 查找为 null 的字段以及不存在的字段。

mongo 手册还指出“即使有索引,$exists 也不是很有效”

查询 null 也应该被认为是低效的吗?

如果知道要查找的字段存在但为null,这样写是不是更高效:

db.foo.find({ "y": { $type : 10 } } )

比:

db.foo.find({ "y": null } )

假设字段被索引

编辑:给出一些使用方式的上下文,以便人们可以建议更好的方法:我正在跟踪文档上发生的处理步骤。每个步骤都有一个时间戳,所以我知道它是什么时候发生的。定期运行内务处理流程并检查是否有任何未发生的任务(即不存在完成时间戳)以确保没有遗漏任何内容

最佳答案

我不能肯定地说哪个更快,但是有一个 thread in the news group有人对 $type-query 的性能有问题。

撇开这一点不谈,我不会使用 $type 查询有以下三个原因:

  1. 它更难阅读和理解。即使是普通的 MongoDB 用户也可能不知道 {type : 10} 是什么。
  2. 正如您已经指出的,语义是不同的。 $type 查询允许“两种不同类型的 null”,即该字段不存在的文档,以及该字段存在但为空的文档。反序列化后,这可能会变成大多数语言中的相同对象,但 $type-query 会区分它们。
  3. 索引用于索引数据,而不是元信息。即使查询优化器能够映射它,我仍然会坚持使用更直接的解决方案。

我相信另一个性能风险可能是 null 值的潜在低选择性:如果一半文档具有某个值 y 而一半文档具有 null y ,查询空元素将返回大量文档,并且迭代游标可能会很昂贵。不过,只有在存在大量空值时才会出现这种情况。

关于MongoDB 搜索 "null"是否比搜索 "does not exist"更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10917822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com