У нас есть около 7-8 таблиц в нашем приложении для Android, каждый из которых имеет около 8 столбцов в среднем. Операции чтения и записи выполняются в базе данных, и я экспериментирую и пытаюсь найти способы повышения производительности уровня DataAccess. Итак, пока я попытался следующий:Оптимизация SQLite для Android
- Используйте позиционные аргументы в которых положение (Причина: так что SQLite использует тот же план выполнения)
- заключите вставки и обновление с транзакциями (Причина: каждая операция дб заключен в транзакцию по умолчанию. Выполнение этого приведет к удалению этих служебных данных)
- Индексирование: я не создал никакого явного индекса, кроме тех, которые созданы по умолчанию для столбцов первичного ключа и уникальных ключей. (Причина: индексирование улучшит время поиска)
У меня есть m упом нуто мои предположения в paranthesis; пожалуйста, поправьте меня, если я ошибаюсь.
Вопросы:
Могу ли я добавить что-нибудь еще в этом списке? Я где-то читал, что избежать использования db-журнала может повысить производительность обновлений? Это миф или факт? Как это можно сделать, если их рекомендовать?
Разрешены ли вложенные транзакции в SQLite3? Как они влияют на производительность? Дело в том, что у меня есть функция, которая запускает обновление в цикле, поэтому я вложил цикл в блок транзакций. Иногда эта функция вызывается из другого цикла внутри некоторой другой функции. Вызывающая функция также охватывает цикл внутри блока транзакций. Как такое вложение транзакций влияет на производительность?
В тех случаях, когда в моих предложениях используется более одного столбца для построения предиката. Эти столбцы могут не обязательно иметь первичный ключ или уникальные столбцы. Должен ли я создавать индексы на этих столбцах? Это хорошая идея создать несколько индексов для такой таблицы?
Спасибо, что нашли время, чтобы ответить на этот вопрос. – Samuh