Ответ 1
Возможно, вы извлекаете намного больше данных из файла JSON, чем намереваетесь. Google разработал некоторые рекомендации о том, как лучше структурировать ваши данные, чтобы вы влияли на как можно меньше информации.
Избегайте использования слишком большого количества индексов. Чрезмерное количество индексов может увеличить задержку записи и увеличить затраты на хранение для записей индекса.
Помните, что индексирование полей с монотонно увеличивающимися значениями такие как временные метки, могут привести к появлению горячих точек, которые влияют на задержку приложения с высокой скоростью чтения и записи.
https://firebase.google.com/docs/firestore/best-practices#indexes
Также может пригодиться этот раздел под индексами:
Избегайте записи в документ более одного раза в секунду. Для большего информацию см. в разделе Обновления для одного документа.
Используйте пакетные операции для ваших записей и удалений вместо одного операции. Пакетные операции более эффективны, потому что они выполняют несколько операций с одинаковыми накладными расходами как одна операция.
Используйте асинхронные вызовы, где это возможно, вместо синхронных вызовов. Асинхронные вызовы минимизируют влияние задержки. Например, рассмотрим приложение, которому нужен результат поиска документа и результаты запроса, прежде чем сделать ответ. Если поиск и запрос делают нет зависимости от данных, нет необходимости синхронно ждать пока поиск не завершится до начала запроса.
Не используйте смещения. Вместо этого используйте курсоры. Использование только смещения позволяет избежать вернуть пропущенные документы в вашу заявку, но эти документы все еще извлекаются изнутри. Пропущенные документы влияют задержка запроса, и ваша заявка выставляется за чтение операции, необходимые для их получения.
https://firebase.google.com/docs/firestore/best-practices#read_and_write_operations
Надеюсь, это поможет вам!