Название: sqlite и qt Отправлено: Dastes от Апрель 16, 2012, 18:49 Вставка в таблицу 1361 записи занимает ~130 секунд. Пробовал перебирать циклом и пакетным запросом.
Можно ли как-нибудь ускорить это дело? Код: void Transactions::putData(QStringList data, QString name) Название: Re: sqlite и qt Отправлено: DmP от Апрель 16, 2012, 19:05 Может транзакция поможет?
Название: Re: sqlite и qt Отправлено: Dastes от Апрель 16, 2012, 19:09 В справке по QSqlQuery о транзакциях ни слова не нашел.
Ты бы пример привел. Название: Re: sqlite и qt Отправлено: Dastes от Апрель 16, 2012, 19:24 Все. Вопрос решен.
Правда помогла транзакция. Заполняется таблица незаметно быстро. Оказывается это относится к QSqlDatabase. Название: Re: sqlite и qt Отправлено: JayFOX от Апрель 16, 2012, 22:31 На MySQL прирост скорости значительный, если внести в один запрос вида
Код: INSERT INTO table(val) VALUES(...), (...) ... Название: Re: sqlite и qt Отправлено: Пантер от Апрель 17, 2012, 09:46 Замечание, ты неверно используешь prepare. Почитай в ассистенте, как правильно нужно.
Название: Re: sqlite и qt Отправлено: UNION labs от Апрель 18, 2012, 11:50 Транзакция решает!
Код: void Transactions::putData(QStringList data, QString name) Вот нашел даже такое сравнение скорости http://www.sqlite.org/speed.html (http://www.sqlite.org/speed.html) Название: Re: sqlite и qt Отправлено: Dastes от Апрель 18, 2012, 11:56 Транзакция решает! Так и сделал!Код: void Transactions::putData(QStringList data, QString name) Вот нашел даже такое сравнение скорости http://www.sqlite.org/speed.html (http://www.sqlite.org/speed.html) Только не пойму почему пакетный запрос не канает. Судя по логике он должен все за один раз туда отправить, а на практике выполняется так же долго как и простыми запросами через цикл. Название: Re: sqlite и qt Отправлено: UNION labs от Апрель 18, 2012, 12:06 Только не пойму почему пакетный запрос не канает. Судя по логике он должен все за один раз туда отправить, а на практике выполняется так же долго как и простыми запросами через цикл. Что вы подразумеваете под пакетным запросом? Название: Re: sqlite и qt Отправлено: Dastes от Апрель 18, 2012, 12:10 Только не пойму почему пакетный запрос не канает. Судя по логике он должен все за один раз туда отправить, а на практике выполняется так же долго как и простыми запросами через цикл. Что вы подразумеваете под пакетным запросом? http://qt-project.org/doc/qt-4.8/qsqlquery.html#execBatch (http://qt-project.org/doc/qt-4.8/qsqlquery.html#execBatch) Название: Re: sqlite и qt Отправлено: UNION labs от Апрель 18, 2012, 12:20 Ага понял, не внимательно прочитал ваш первый пост.
На самом деле все просто Код: QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); SQLite просто не поддерживает данной возможности! Название: Re: sqlite и qt Отправлено: Dastes от Апрель 21, 2012, 22:13 Возникла еще проблема:
Установил чистый xp на виртуальную машину. Скопировал туда программу. Она запускается нормально, но список QComboBox, который заполняется данными из запроса к Sqlite, пуст. Никаких ошибок не выдает. В чем может быть дело? Название: Re: sqlite и qt Отправлено: LisandreL от Апрель 22, 2012, 00:10 dll не взяли, а ошибки нет, потому, что при открытии и запросах не проверяете успешность этих операций и не выводите ошибку при неудаче.
Название: Re: sqlite и qt Отправлено: Dastes от Апрель 22, 2012, 00:21 LisandreL, так и есть :)
Думал,что QtSql4.dll достаточно. Нужно в папке с программой создать папку sqldrivers, и закинуть туда qsqlite4.dll. |