Odbc С++ : как быстро заполнить связанные таблицы
От: mangaman  
Дата: 25.12.18 21:54
Оценка:
У меня есть С++ объект (структура), которую требуется по частям сохранить в две таблицы. Эти две части связываются primary key:

table1
id Primary Key, Identity, Not Null
data1 колонка с некими данными

table2
id Primary Key
foreign_id ключ table1.id
data2 колонка с данными

Этих структур миллионы, и необходимо загрузить их в базу за минимальное время. Во вторую таблицу я их вставляю вызовом bulk функций, типа bcp_sendrow, но для этого мне надо знать id для foreign_id из первой таблицы, поэтому перед этим я вставляю данные в таблицу 1 и получают id вставленной строки. Псевдокод:
SqlExecDirect(.."INSERT INTO table1 (data1) VALUES (MyStruct.data1)"..);
SqlExecDirect(.."SELECT @@identity"..);

SqlFetch(sqlStmtHandle);        
MyStruct.Id = (int)SqlGetDataInt(sqlStmtHandle);


Эта часть работает значительно медленнее bulk-функций.

Подскажите какой-то более оптимальный способ заполнения связанных таблиц.

Или подскажите, можно ли сделать INSERT с получением созданного primary key не построчно, а как-то быстрее, блоками?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.