如何解决从Firebase实时数据库中获取数据需要花费几秒钟的时间[修订]
我正在使用Firebase API使用Realtime数据库获取数据。这是一个查询
self.ref.child("books").observeSingleEvent(of: .value,with: { (snapshot) in
//if the reference have some values
if snapshot.childrenCount > 0 {
//iterating through all the values
for bookSnapshot in snapshot.children.allObjects as! [DataSnapshot] {
if let book = Book(snapshot: bookSnapshot) {
在LTE上,此查询需要12秒才能加载。您将如何建议加快数据库的数据提取速度?
这是图书数据库的结构-
有多个节点,例如10个快乐节点。
{
"10-happier" : {
"amazonBuyUrl" : "https://amzn.to/2nuHTHR","audioUrl" : {
"chapter1" : "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-2.mp3"
},"author" : "Dan Harris","authorDesc" : "test test","body" : "test test","categories" : [ "Self Development","Psychology","Biography & Memoir" ],"completed" : {
"10219993430288225" : 1581846137041,"1556272301132307" : 1581916289207,"3017569394928984" : 1586155390963,"3263627003652258" : 1582049236951,"A-3Yk9o0FtfHWlZj515mt3zHxtYeQ2" : 1582128686621,"A-7oXx7p9b9jgdfbKwsehbDIBXhGC3" : 1581566535161,"A-Ho0APgwxoHURm8O92evZr6G9tkt2" : 1581904896082,"A-HtKtSqVZgFMBM1yw4gHm3e2hLUg1" : 1584884159090,"A-qxlGjJTfchSECP5YsxJM0wSuSIw1" : 1581792731008,"G-105788332369376743421" : 1581818412363,"G-113771252263706881621" : 1581738757995
},"courses" : "mindfulness-101","desc" : "test test","free" : false,"id" : "10-happier","image" : "https://test.com","lists" : {
"10101867942050954" : [ "test Test" ]
},"mediaUrl" : "https://test.com/image","publishDate" : 1589475061979,"readCount" : 685,"starCount" : 59,"stars" : {
"10101867942050954" : true,"10157136524486298" : true,"10157477945123673" : true,"10157499260876070" : true,"1017037695358370" : true,"10222308106395933" : true,"154186932609338" : true,"1556272301132307" : true,"2661378620608937" : true,"2815111171929439" : true,"3038320762848045" : true,"A-0ypREkE8fRUtnqxOlxQgGWFrdsp1" : true,"A-1XY2T9NjZPSTnpIdwKFFWfWJLx33" : true,"A-2rUW7UcYCcT0uZhdxUiO51gPw8N2" : true,"A-2v24CZFRW8budbcPWaXB528pXhE2" : true,"A-3phIjft84KRjnx3nG8gvvuuExHa2" : true,"A-9TaI4W9sHEhFdiuBtRwLRJPaPv72" : true,"A-ABOJnyIloSVSfAx06Sp5qX9WKzq1" : true,"A-AR3XlMB3QkbVQRvREMhzOjdJKhd2" : true,"A-EF1gKttAbYfJEiGx0UjO5KiHbPo2" : true,"A-Frq5L8B0A5dbsLNMkMcUv1DKw7F2" : true,"A-N4rVyl26YeYCYKtZCYQVbBL6dMh2" : true,"A-NWvtTI4spCeCrxmoz8fpEZp68T43" : true,"A-NkAFmiH3ohSOIKUKDKLWzlAbc533" : true,"A-NvDpA1BZSSSBrpXjjvydM8iqFBQ2" : true,"A-PCrfGOW5cqRVoAgA4DqyCqBb1F22" : true,"A-QVfzwTST5VOMUxR4oZEHk7rNU9J3" : true,"A-RIPsjzsChjXM3Xi7XG4N45R7YIv1" : true,"A-W8PlMnlmBsTgUfgqLUseSNJmE0W2" : true,"A-Wj3KVZtFmtZRrS1439mUkWfVtIm1" : true,"A-YUjrDlXJ1fabthCvgY1Khu5ogVR2" : true,"A-YhDT27Ri5Reb12EFHlh00j6dZy53" : true,"A-cJNzJZplLZVftha8MGQvbTj4DnE2" : true,"A-h49UQNkPDuSM135br3eE2Q8LzCW2" : true,"A-lIxOylTfoFWJHTtbE4moylPz04B2" : true,"A-rYRWKnQMTMgwQihrr2GPjTOpfEB3" : true,"A-u3fWRq2ZqyVQhjjBD1Xkhpc9SUs1" : true,"A-u4vyWb96rsdQNcgnwYkOZ46aTeY2" : true,"A-ugChjAs0vTRae7Bby6AQzXVPbC83" : true,"A-zd22udZZfjfs5hF1SAeAQmEpenl1" : true,"A-zi1RWeLxrmXQmPbzqN6gERUyJps2" : true
},"subtitle" : "How I Tamed the Voice in My Head,Reduced Stress Without Losing My Edge,and Found Self-Help That Actually Works--A True Story","tags" : [ "nyt" ],"title" : "10% Happier","uploadDate" : 1589475061979,"video" : "https://test.com/video"
}
}
数据库大小为3.4MB。有超过250个节点。
解决方法
正如我第一次提到这个问题时,您将需要减少查询中的数据量。如果您一次不需要所有这些数据,请将其拆分为不同的节点,然后根据需要分别查询每个节点。
但是我要说的是,按照此处显示的指标,您所谓的LTE连接似乎很慢。该查询本身并没有真正提供任何开销,因为您只是在询问单个节点的全部内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。