我在Android应用上使用Firebase数据库。通常情况下,它工作正常。但是当数据库越来越大时,查询性能越来越差。我在数据库(在“elk”和“su”节点下)添加了约5k的记录,然后在数据库上查询(在“剪切”和“用户”节点上),但所有查询都非常慢。我在数据库规则上定义了数据索引,但它不起作用。我该如何解决这个问题?在大型数据集上查询Firebase数据库非常慢
这里是我的查询:
// query to get the zones followed by user
FirebaseDatabase.getInstance()
.getReference()
.child("user")
.child(userID)
.child("zones");
// query to get cuts on a zone
FirebaseDatabase.getInstance()
.getReference()
.child("cut")
.child(cutType)
.orderByChild("zoneID")
.equalTo(zoneID);
当你说非常非常缓慢。你的意思是多慢?你有任何测试结果或什么?我们如何知道网络是否正常,或者手机运行良好,应该有更具体的问题证据,直到此时我们只能假设并指责火力点本身的功能缓慢。请尝试使用最小,中等,大型数据库等生成更具体的测试结果。同时牢记网络强度,手机缓存性能等各种因素。 –
您在问题中包含了JSON树的图片。请用实际的JSON替换为文本,您可以通过点击Firebase数据库控制台中的导出按钮轻松获取。将JSON作为文本可以搜索,使我们能够轻松使用它来测试您的实际数据,并将其用于我们的答案中,并且通常只是一件好事。 –
如果速度缓慢,它几乎毫无例外地是网络带宽与您正在下载的数据的函数。我不会立即看到任何看起来非常大的东西,并且您的索引看起来是正确的。如果您可以在jsfiddle/jsbin中重现问题,我们可以尝试一下,看看我们的表现与您的表现相比如何。 –