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