对于我在JavaScript查询中使用的每个orderByChild
,我从Firebase收到此警告消息:
FIREBASE警告:使用未指定的索引。考虑在/ table中添加“.indexOn”:“”表示您的安全规则以获得更好的性能
到目前为止,我的查询运行得非常快,所以我认为没有必要包含indexOn
。只是想知道什么是负面影响?
另外,我如何实际禁用警告,因为在调试时它们非常烦人。
答案 0 :(得分:10)
如果您处于开发阶段,您将无法感受到其中的差异。但随着数据的增长,索引有助于提高查询速度。
阅读本文以了解有关索引优势的更多信息。 https://firebase.google.com/docs/database/security/indexing-data
据我所知,要禁用警告,您必须编辑firebase源代码。 Is there someway to disable all firebase logging to console?
答案 1 :(得分:7)
正如其他人所说:如果你没有定义索引,所有过滤都发生在客户端。这在初始开发期间可能很好,但随着您添加更多数据,它会变得越来越浪费。
要解决此问题,请在Firebase数据库规则中定义正确的索引。您可以修改Database panel in your project's Firebase console中的规则。请参阅Firebase文档中的defining data indexes。
我有什么方法可以通过索引观察发生了哪些变化?
答案 2 :(得分:3)
Firebase提供了用于订购和查询数据的强大工具。索引可以提高查询的性能。考虑一个名为dinosaur
的表有一些数据,如:
{
"lambeosaurus": {
"height" : 2.1,
"length" : 12.5,
"weight": 5000
},
"stegosaurus": {
"height" : 4,
"length" : 9,
"weight" : 2500
}
}
你需要(搜索)命令恐龙的高度和长度,但从不按重量。所以你需要为dinosaur
表设置规则,如:
"rules": {
"dinosaurs": {
".indexOn": ["height", "length"]
}
}
通过告知Firebase此信息,Firebase可以使用此.indexOn
来优化我们对高度和长度的查询。然后,我们维护了Firebase安全性,以便查询我们的数据并提高查询性能。