crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

Rocky
  опции профиля:
сообщение 16.2.2009, 13:32
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Создаю таблицу и заполняю ее посредством запроса INSERT. В таблицы больше 1к записей и заполнение идет очень долго... Можно ли как-нибудь ускорить запись? Оптимизировать это дело?

Да, кто знает, обязательно ли перед каждым вызовом QSqlQuery::exec использовать QSqlQuery::prepare (все это происходит в цикле)? Или QSqlQuery::prepare достаточно вызывать один раз перед циклом, а внутри делать только QSqlQuery::bindValue и затем QSqlQuery::exec?

Спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
4 страниц V  « < 2 3 4  
Начать новую тему
Ответов (30 - 32)
SABROG
  опции профиля:
сообщение 18.2.2009, 11:52
Сообщение #31


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(Tonal @ 18.2.2009, 11:38) *
Функция test() может вернуть false, если вызвана не внутри транзакции.


Мне память не изменяет, сначала будет вызвана rt_count(), затем sql_count()?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 18.2.2009, 13:10
Сообщение #32


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Последовательность их вызова зависит от компилятора и оптимизатора.
Но если запросы в них выполняются в разных транзакциях, как это происходит в Qt если не стартовать транзакцию явно, то между первым и вторым может вклиниться кто-то третий и изменить состав таблицы.
Если же транзакция одна (с соответственным уровнем), то вклинится никто не может.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
512es
  опции профиля:
сообщение 20.3.2010, 20:57
Сообщение #33


Участник
**

Группа: Участник
Сообщений: 135
Регистрация: 31.10.2008
Пользователь №: 407

Спасибо сказали: 5 раз(а)




Репутация:   0  


Извиняюсь, что тема давнешняя. Но до сих пор, (раз я сюда попал) актуальная.

Так вот, хочу сказать что для ускорения инсерта в склайт базу, лучше всего подходит инсертить в темпорари таблицу, а из неё моментально всё перелетает в обычную.

Вот только с постгресом это не прокатывает. Попробую через execBatch..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

4 страниц V  « < 2 3 4
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 20:50