#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);
Если это происходит в первый раз после установки, это может быть вызвано тем, что система впервые загружает кэш приложения.