Как ускорить создание таблицы (через QSqlQuery)? |
Здравствуйте, гость ( Вход | Регистрация )
Как ускорить создание таблицы (через QSqlQuery)? |
Tonal |
17.2.2009, 9:29
Сообщение
#11
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
trdm, транзакция не ускоряет процесс, она лишь делает его атомарным Действительно так, но если ты явно не стартуешь транзакцию, то Qt её стартует на каждый запрос. А старт и окончание транзакции может занять довольно много времени (в зависимости от типа движка). |
|
|
SABROG |
17.2.2009, 9:55
Сообщение
#12
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
СУБД SQLite 3. На тему скоростей sqlite было несколько статей в интернете с рекомендациями. Можно добавить следующие опции SQL запросом:
На самом деле page_size зависит от операционной системы/файловой системы. Для винды одно значение оптимальное, для *nix'ов другое. В общем погугли на тему этих комманд. Еще обращу внимание на такие методы (псевдокод):
Т.е. в QSqlQuery можно передавать сразу целые списки для каждого объявленного поля, драйвер сформирует сам запросы. Сообщение отредактировал SABROG - 17.2.2009, 9:57 |
|
|
Rocky |
17.2.2009, 10:21
Сообщение
#13
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Ххе, ясно. SABROG, спасибо, погуглю..
Я тут добавил транзакции, я в шоке . Время с 18 мин. упало до 9-ти сек. Я не успел пасьянс открыть, как программа заявила что все таблицы сформированы Эх, осталось разобраться только почему программно не удается менять значения в базе... (( Вобщем, всем большое спасибо! |
|
|
Константин |
17.2.2009, 11:53
Сообщение
#14
|
Студент Группа: Участник Сообщений: 69 Регистрация: 9.2.2009 Пользователь №: 539 Спасибо сказали: 15 раз(а) Репутация: 1 |
повышай SABROG-а за это.
Сообщение отредактировал Константин - 17.2.2009, 12:33 |
|
|
Litkevich Yuriy |
17.2.2009, 12:01
Сообщение
#15
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
trdm |
17.2.2009, 17:44
Сообщение
#16
|
Дмитрий Трошин Группа: Участник Сообщений: 575 Регистрация: 12.1.2008 Пользователь №: 68 Спасибо сказали: 21 раз(а) Репутация: 6 |
а я что недостоин плюсика? волки
нас тупых 1С-ников нихто не любит )))) Сообщение отредактировал trdm - 17.2.2009, 17:45 |
|
|
Rocky |
17.2.2009, 18:09
Сообщение
#17
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Упс, сорри Так лучше? ))))
|
|
|
trdm |
17.2.2009, 18:12
Сообщение
#18
|
Дмитрий Трошин Группа: Участник Сообщений: 575 Регистрация: 12.1.2008 Пользователь №: 68 Спасибо сказали: 21 раз(а) Репутация: 6 |
блин, пошутить нельзя без последствий
Спасибо. |
|
|
Rocky |
17.2.2009, 21:37
Сообщение
#19
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
По-поводу транзакций... Ув. форумчане, не подскажите вот при навигации по таблице БД, нужно их использовать? Или они толку не дадут?
Или транзакции важны именно при вставке/удалении/обновлении базы данных? |
|
|
SABROG |
17.2.2009, 21:58
Сообщение
#20
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Только для изменения таблиц.
Если не устраивает скорость выборки, то рекомендую создать индексы по полям. Здорово увеличивает скорость. Индексы обычно создаются по полям, которые участвуют в "order by". Если SQL запрос статичный в принципе, то можно сделать вьюху (create view). Выборку можно будет вызывать например так "select myview" (если память не отшибает). Индексы создаются так:
|
|
|
Текстовая версия | Сейчас: 15.1.2025, 10:32 |