Мое приложение для Android работает с использованием базы данных SQLite, которая создается на ПК пользователя и передается на устройство. Все это работает, но я не ожидал, что количество пользователей будет очень большим. В этих случаях пользовательский интерфейс очень вялый, поскольку он ожидает выборки данных.
Я пробовал несколько трюков, которые, я был «уверен», ускорили бы ситуацию, но, похоже, ничто не дало заметного эффекта. Мои запросы почти все очень просты, обычно это один столбец "col = val" для предложения WHERE и данные INTEGER в столбце. Поэтому я мало что могу сделать с запросами.
Последним, и я ни в коем случае не являюсь экспертом по SQL, было использование команд «CREATE INDEX» на ПК, полагая, что эти индексы используются для ускорения поиска в базе данных. Индексы значительно увеличили размер файла базы данных, поэтому я был удивлен, что это никак не сказалось на скорости моего приложения! Экран, который занимал 8 секунд, чтобы заполнить без индексов, все еще занимает приблизительно 8 секунд даже с ними. Я надеялся свести на нет хотя бы половину этого.
Что меня интересует в этот момент, так это то, что реализация SQLite на Android вообще использует индексы базы данных, или я просто трачу пространство, генерируя их. Кто-нибудь может ответить на это?
Также, есть ли другие способы ускорить доступ?
(Что бы ни стоило, пользователям абсолютно не на что жаловаться. У моего пользователя наихудшего случая пока есть данные, которые генерируют 630 000 записей (15 таблиц), так что есть только так много, что возможно!)
Дуг Гордон
Системы GHCS