Russian Qt Forum

Qt => Базы данных => Тема начата: Alex_C от Июль 04, 2012, 08:16



Название: QSqlTableModel - как быстрее вставлять данные
Отправлено: Alex_C от Июль 04, 2012, 08:16
Есть бд на SQLite или MS Access (2 разных варианта программы). В базе около 200 тыс записей. Полей в таблице около 70.
Человек заносит в базу данные (при вставке практически все поля автоматически заполняются телеметрией, человек редактирует лишь одно поле). Нужно обеспечить максимальную скорость вставки и отражения данных в QTableView. Скорость может достигать 2-х записей в секунду.
Вопрос: как максимально быстро организовать вставку в QSqlTableModel?
Понятно, что можно так:
Код
C++ (Qt)
   model.insertRows(row, 1);
   model.setData(model.index(row, 0), 100);
   model.setData(model.index(row, 1), "Чего-то там");
   model.setData(model.index(row, 2), QDate(1985, 12, 31));
   model.setData(model.index(row, 3), 2007);
 
Но возможно есть какой то более быстрый способ?


Название: Re: QSqlTableModel - как быстрее вставлять данные
Отправлено: RVZ от Июль 09, 2012, 23:26
Может быть имеет смысл для сохранения данных пользоваться прямым INSERT а вивку обновлять время от времени ( с QueryModel) не все же 200 тс строчек нужны да и глазки быстрых обновлений не потянут - показывай партиями по 20-50 последних.
Или если надо чтобы эти данные на компе были (то есть время сброса в базу отложено для более благоприятного момента) тогда наверное имеет смысл реализовать собственную модель в которой метод записи реализовывался сразу пачкой столбцов(классом) (без постоянных вызовов index и прочей посредственности)