Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

SQLite - скорость работы

27K
14 апреля 2008 года
NikiFar
16 / / 01.03.2008
Я только начинаю работать с базами данных и столкнулся с SQLite,
Хочу добавить в таблицу 100 записей , для этого использую функции
sqlite3_prepare(db,"CREATE TABLE tbl1 (N INTEGER PRIMARY KEY AUTOINCREMENT, nm CHAR(20), score INT);" , -1, &pStmt, NULL)
sqlite3_step(pStmt);
sqlite3_finalize(pStmt);

sqlite3_prepare(db, "INSERT INTO tbl1 VALUES(NULL, 'file1',1);", -1, &pStmt, NULL) ;
sqlite3_step(pStmt);
sqlite3_finalize(pStmt);

sqlite3_prepare(db, "DROP TABLE tbl1;" , -1, &pStmt, NULL) ;
sqlite3_step(pStmt);
sqlite3_finalize(pStmt);


И для 100 записей по времени выходит приблизительно секунд 20 - 30.
Можно ли этот показатель как-то улучшить ??
337
14 апреля 2008 года
shine
719 / / 09.06.2006
1)Попробуйте сделать все одним инсертом (если такое можно делать в лайт): insert into tab1(a,b) values (1,2), (3,4), (5,6),...
2)Попробуйте сделать все это в одной транзакции
3)Попробуйте подумать а нужно ли вам делать такую операцию настолько часто что 20-30 секунд это много. Я не ставлю под сомненье но советую еще раз проанализировать
2
14 апреля 2008 года
squirL
5.6K / / 13.08.2003
Цитата: NikiFar

И для 100 записей по времени выходит приблизительно секунд 20 - 30.
Можно ли этот показатель как-то улучшить ??



а вы уверены, что узким местом является сам SQLite, а не файловая система?

27K
15 апреля 2008 года
NikiFar
16 / / 01.03.2008
Я разобрался, надо было просто перед началом insert делать
sqlite3_exec(db, "BEGIN", NULL, NULL, NULL)
а после insert-ов
sqlite3_exec(db, "COMMIT", NULL, NULL, NULL)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог