Android Sqlite занимает больше времени при выполнении запроса в первый раз

#android #sqlite #android-sqlite

#Android #sqlite #android-sqlite

Вопрос:

Я использую sqlite в своем приложении для Android, у меня в приложении огромная база данных. У меня есть одна таблица с 300 тыс. записей с индексированным столбцом.

Запрос : SELECT SOME_COLUMN FROM TEST_TABLE WHERE SOME_COLUMN = 'some_text' ORDER BY SOME_COLUMN DESC

Когда указанный выше запрос выполняется впервые с момента установки приложения на мобильном устройстве, это заняло около 7-9 секунд

После каждого последовательного обращения к БД мне требуется около 200-250 миллисекунд. Даже я попытался перезапустить приложение, это дало бы мне те же 200-250 миллс-сек.

Почему существует огромная разница, любой механизм кэширования, используемый внутри него, если да, то как долго будет работать кэширование?
Кто-нибудь может объяснить это.

Комментарии:

1. Once opened successfully, the database is cached developer.android.com/reference/android/arch/persistence/db/…

2. @IntelliJAmiya в нем указано, что кэшируется только экземпляр базы данных, а не план выполнения запроса.

Ответ №1:

Оптимизация, которую вы можете попробовать, — это создать индекс для столбцов, которые вы запрашиваете.

 CREATE INDEX index_name ON table_name(column_list);
  

Если это происходит в первый раз после установки, это может быть вызвано тем, что система впервые загружает кэш приложения.