使用limitToFirst或limitToLast时,Firebase是否加载所有项目?

使用limitToFirst或limitToLast时,Firebase是否加载所有项目?,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,例如,我的数据库结构如下: "chatMessages": { "chat1": { "m1": { "name": "eclarke", "message": "The relay seems to be malfunctioning.", "timestamp": 1459361875337 }, "m2": { ... }, "m3": { ... } }, "chat2

例如,我的数据库结构如下:

"chatMessages": {
    "chat1": {
      "m1": {
        "name": "eclarke",
        "message": "The relay seems to be malfunctioning.",
        "timestamp": 1459361875337
      },
      "m2": { ... },
      "m3": { ... }
    },
    "chat2": { ... },
    "chat3": { ... }
  }
现在,一些聊天,比如说,有1000条信息。当我使用LimitToLast检索最后100条消息时。Firebase是先加载所有1000条消息,然后再向我发送我想要检索的100条消息,还是将加载限制为我真正需要的100条消息?我不确定,因为我读了很多关于保持数据库尽可能平坦的文章

如果FixBASE首先加载所有1000条消息,我是否应该考虑以特定的方式嵌套?


我希望社区能把事情讲清楚

这里有两种可能性:

在键上有一个隐式索引,或者对于查询有一个显式索引,数据在服务器上被过滤

查询没有索引,在这种情况下,该位置的所有数据都将在客户端上检索和排序/筛选


谢谢你,弗兰克。我试图理解会发生什么,但为了限制服务器负载,最好给它一个按子时间戳排序的时间戳?不一定。您也可以通过键或值进行限制。但你的问题在这方面相当抽象,所以我的回答再具体不过了。我同意,这是一个抽象的表述。我真的试图理解服务器端发生了什么,因为我不想不必要地使服务器过载。非常感谢你的回答,它让我有了更好的洞察力。再次感谢!