Используете ли вы асинхронный или синхронный режимы выполнения?Разница между ними заключается в том, что асинхронное выполнение выполняется в фоновом режиме, а приложение продолжает работать.Тогда вашему приложению придется прослушать отправленное событие и затем выполнить любые последующие операции.Однако в синхронном режиме пользователь не сможет взаимодействовать с приложением, пока не завершится работа с базой данных, поскольку эти операции выполняются в той же последовательности выполнения, что и приложение.Синхронный режим концептуально проще для реализации, но асинхронный режим даст лучшее удобство использования.
В первый раз SQLStatement.execute()
в экземпляре SQLStatement
оператор подготовлен автоматически перед выполнением.Последующие вызовы будут выполняться быстрее, если свойство SQLStatement.text
не изменилось.Использование одинаковых SQLStatement
экземпляров лучше, чем создание новых экземпляров снова и снова.Если вам нужно изменить свои запросы, рассмотрите , используя параметризованные операторы .
. Вы также можете использовать такие методы, как откладывание необходимых данных во время выполнения.Если вам нужна только часть данных, сначала извлеките их, а затем извлеките другие данные по мере необходимости.Это может зависеть от области применения вашего приложения и того, что вам необходимо выполнить.
Указание базы данных с именами таблиц не позволит среде выполнения проверять каждую базу данных на предмет поиска соответствующей таблицы, если у вас несколько баз данных.Это также помогает предотвратить выбор неправильной базы данных во время выполнения, если это не указано.Сделайте SELECT email FROM main.users;
вместо SELECT email FROM users;
, даже если у вас есть только одна база данных.(main
автоматически присваивается в качестве имени базы данных при вызове SQLConnection.open
.)
Если вы случайно записали много изменений в базу данных (несколько операторов INSERT
или UPDATE
), тогдарассмотрите возможность обернуть его в транзакцию.Изменения будут внесены в память во время выполнения и затем записаны на диск.Если вы не используете транзакцию, каждая инструкция приведет к записи на диск в файл базы данных, что может быть медленным и занимать много времени.
Старайтесь избегать любых изменений схемы.Данные определения таблицы хранятся в начале файла базы данных.Среда выполнения загружает эти определения при открытии соединения с базой данных.Данные, добавленные в таблицы, сохраняются после данных определения таблицы в файле базы данных.При таких изменениях, как добавление столбцов или таблиц, новые определения таблиц будут смешаны с данными таблиц в файле базы данных.В результате среда выполнения должна будет считывать данные определения таблицы из разных частей файла, а не с самого начала.Метод SQLConnection.compact()
реструктурирует данные определения таблицы так, чтобы они находились в начале файла, но его недостатком является то, что этот метод также может занимать много времени и даже больше, если файл базы данных большой.
НаконецКак отметил Benoit в своем комментарии, рассмотрите возможность улучшения ваших собственных запросов SQL и структуры таблиц, которые вы используете.Было бы полезно знать структуру вашей базы данных, и запросы являются фактической причиной низкой производительности или нет.Я предполагаю, что вы используете синхронное выполнение.Если вы переключитесь в асинхронный режим, вы увидите более высокую производительность, но это не значит, что на этом нужно останавливаться.
В онлайн-документации Adobe Flex содержится больше информации о повышении производительности базы данных и рекомендации по работе с локальными базами данных SQL .