Нет способа быстрее загрузить те же данные.Firebase не ограничивает скорость загрузки искусственно, поэтому время, необходимое для чтения 37 000 строк, - это время, которое требуется для чтения 37 000 строк.
Чтобы ваше приложение быстрее реагировало на пользователя, вы будетедолжны загружать меньше данных.И поскольку маловероятно, что ваш пользователь прочитает все 37 000 строк, хорошим первым вариантом будет загрузить только те данные, которые они увидят.
Поскольку вы описываете сценарий автозаполнения, я сначала посмотрю наиспользуя запрос, чтобы получить только дочерние узлы, которые соответствуют тому, что они уже набрали.В Firebase это было бы примерно так:
ref.queryOrdered(byChild: "name")
.queryStarting(atValue: "stack")
.queryEnding(atValue: "stack\u{f8ff}")
Этот код принимает (на сервере) все узлы в ref
и упорядочивает их по имени.Затем он находит первый, начинающийся с stack
, и возвращает все дочерние узлы, пока не находит тот, который больше не начинается с stack
.
При таком подходе фильтрация происходит на сервере, и клиенту нужно толькозагрузить данные, соответствующие запросу.