2013-11-30 3 views
0

У меня есть программа в lazarus, которая считывает и обрабатывает данные с сервера базы данных mysql5, тогда эти данные создают набор таблиц в sqlite, чтобы использовать его в приложении Android, в этом в наборе таблиц есть то, что количество записей составляет около 12000, когда я пытаюсь создать эти таблицы с помощью объекта Saclite dataaccess в lazarus, например TSqlScript, для выполнения этого сценария создания занимает много времени около 8-15 минут, но выполняет этот скрипт с командной строкой sqlite shell занимает всего несколько секунд, как я Ejecute этот скрипт, используя оболочку sqlite3 от lazarus.Доступ к оболочке sqlite из lazarus для запуска sql-скрипта

+0

Вы используете одну транзакцию вокруг всего скрипта? –

+0

нет, я должен? – David

+0

Пожалуйста, показать код 'TSqlScript'. –

ответ

0

Если вы не используете явные транзакции, SQLite автоматически переносит каждый отдельный оператор SQL в транзакцию, что приводит к ужасным издержкам, если вы используете множество операторов.

Явно использовать одну транзакцию вокруг всего скрипта.

+0

Я использую компоненты TSQLite3Connection и TSQLScript и добавляю в начале скрипта BEGIN TRANSACTION; и в конце скрипта COMMIT; но когда я вызываю метод SQLScript1.Execute; это занимает много времени, и когда финиш не создает ничего, но когда я запускаю scritp из личного эксперта SQLite, это занимает всего несколько минут. – David

+0

Да, я пробую это в java, и скорость очень быстрая, когда вы используете транзакцию beign и End Transaction без трансакций долгое время, но в лазаре нет изменений скорости – David

Смежные вопросы