Название: Удаление всех записей из таблицы Отправлено: Lostinnet от Сентябрь 24, 2010, 10:15 Подскажите как правильно удалять все записи из таблицы БД.
Пробую: model->removeRows(0, model->rowCount()); model->submitAll(); записи удаляются очень медленно, и размер файла с БД остается прежним, не уменьшается Название: Re: Удаление всех записей из таблицы Отправлено: BaltikS от Сентябрь 24, 2010, 10:23 размер файла с БД остается прежним, не уменьшается Это не значит что записи не удаляются из БД. Они удаляются. Остаётся мусор. Это также зависит от БД.Название: Re: Удаление всех записей из таблицы Отправлено: Lostinnet от Сентябрь 24, 2010, 10:28 Вижу что удаляется, но как увеличить скороть и избавится от мусора.
База SQLITE Название: Re: Удаление всех записей из таблицы Отправлено: crossly от Сентябрь 24, 2010, 10:33 используй trancate table.... после удаления строк из таблицы размер БД меньше не станет... :).... строки резервируются для последующего использования...
Название: Re: Удаление всех записей из таблицы Отправлено: voronElf от Сентябрь 24, 2010, 10:56 модель поди по одной строке удаляет, потому и медленно (блокировки-разблокировки таблицы на каждой операции ). Можно конечно все удаление в одну транзакицю общую засунуть (по крайней мере при большом количестве запросов на запись, это дает выигрыш быстродействия очень ощутимый ). но лучше одним запросом DELETE FROM table_name . Запрос TRUNCATE здесь конечно лучше подойдет, только вот вроде SQLITE его не поддерживает.
Название: Re: Удаление всех записей из таблицы Отправлено: Lostinnet от Сентябрь 24, 2010, 11:14 Спасибо за советы!!!
TRUNCATE действительно почему то не работает (( но DELETE с транзакцией очень помогло! и еще один вопросик. Почему после QSqlDatabase::removeDatabase("Journal"); файл с БД все равно остается недоступным для удаления? Тогда как правильно закрыть БД Название: Re: Удаление всех записей из таблицы Отправлено: BaltikS от Сентябрь 24, 2010, 12:41 используй trancate table.... после удаления строк из таблицы размер БД меньше не станет... :).... строки резервируются для последующего использования... Да зачем? После удаления VACUUM надо дать.....Название: Re: Удаление всех записей из таблицы Отправлено: BaltikS от Сентябрь 24, 2010, 12:45 Почему после QSqlDatabase::removeDatabase("Journal"); файл с БД все равно остается недоступным для удаления? Тогда как правильно закрыть БД ищи по форуму, уже обсуждалось неоднократно... |