#flutter #sqflite
Вопрос:
У меня есть приложение flutter, в котором есть некоторые основные данные и 2 большие таблицы с отношениями между родителями и детьми. Данные хранятся на устройстве в базе данных SQLite. Я ожидаю сотни или, может быть, пару тысяч записей в самой большой таблице, которая является дочерней таблицей. Из этих записей я создаю списки объектов. В приложении мне нужны эти списки, упорядоченные по разным полям. Мне кажется, что гораздо проще извлекать данные из базы данных каждый раз, когда они мне нужны.
Мой вопрос в том, какой подход лучше?
- Извлечение всей базы данных при открытии приложения и работа с этими списками в памяти. Для меня недостатком этого решения является то, что мне нужно поддерживать порядок списков, что может быть довольно болезненным по сравнению с одним оператором SQL. Порядок объектов в этих списках очень важен!
- Или я должен читать данные из базы данных каждый раз, когда они мне нужны? И это означает, что я читаю только те записи из БД, которые мне нужны для данного экрана.
Какой подход лучше с точки зрения производительности?
Ответ №1:
Если только он не является MVP со слишком небольшим количеством данных, то приблизьтесь к двум. Это будет немного более громоздко для вас, но это сделает приложение более надежным в будущем и не будет тратить много оперативной памяти(если на устройстве ее достаточно). Вероятно, вам придется реализовать запросы с разбивкой по страницам(выбор, с ограничением и смещением). В то время как пользователь прокручивает и сбрасывает их, если фильтры меняются.
Ответ №2:
Как правило, подкачка-лучший выбор для повышения производительности.
Если вы больше оптимизируете. Кэширование того, что уже было загружено, предварительная загрузка следующей страницы при прокрутке вниз