![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Rocky |
![]()
Сообщение
#1
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: ![]() ![]() ![]() |
Создаю таблицу и заполняю ее посредством запроса INSERT. В таблицы больше 1к записей и заполнение идет очень долго... Можно ли как-нибудь ускорить запись? Оптимизировать это дело?
Да, кто знает, обязательно ли перед каждым вызовом QSqlQuery::exec использовать QSqlQuery::prepare (все это происходит в цикле)? Или QSqlQuery::prepare достаточно вызывать один раз перед циклом, а внутри делать только QSqlQuery::bindValue и затем QSqlQuery::exec? Спасибо! |
|
|
![]() |
SABROG |
![]()
Сообщение
#31
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Tonal |
![]()
Сообщение
#32
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: ![]() ![]() ![]() |
Последовательность их вызова зависит от компилятора и оптимизатора.
Но если запросы в них выполняются в разных транзакциях, как это происходит в Qt если не стартовать транзакцию явно, то между первым и вторым может вклиниться кто-то третий и изменить состав таблицы. Если же транзакция одна (с соответственным уровнем), то вклинится никто не может. |
|
|
512es |
![]()
Сообщение
#33
|
Участник ![]() ![]() Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
Извиняюсь, что тема давнешняя. Но до сих пор, (раз я сюда попал) актуальная.
Так вот, хочу сказать что для ускорения инсерта в склайт базу, лучше всего подходит инсертить в темпорари таблицу, а из неё моментально всё перелетает в обычную. Вот только с постгресом это не прокатывает. Попробую через execBatch.. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 10.7.2025, 20:50 |