Самый эффективный способ вставки большого количества элементов с помощью typeorm - PullRequest
1 голос
/ 02 августа 2020

Кто-нибудь знает, какой способ вставки большого количества элементов с помощью typeorm является наиболее эффективным? В настоящее время я использую метод save с опцией { chunk: 500 }, но он очень медленный

Объект, который я передаю, содержит 1 строку в родительскую таблицу и> 35000 строк (дочерний массив) в дочернюю таблицу

Если я разрежу дочерний массив на 1000 объектов, тогда вставка займет около 10 секунд

Спасибо, Яни

1 Ответ

0 голосов
/ 12 августа 2020

Спасибо, что обратились к нам, я размещаю здесь ответ частично на свой вопрос. Я пытаюсь вставить 1 строку в таблицу заголовков и> 35000 строк в дочернюю таблицу. Затем у дочерних элементов есть ссылка на родительскую запись. Это единственное решение, которое я придумал:

await getConnection().createQueryBuilder().insert().into(MetadataSearch).values(metadataSearch).execute();
        metadataSearch.items.forEach(item => {
            item.metadataSearch = {
                id: metadataSearch.id
            };
        });
await getConnection().createQueryBuilder().insert().into(Item).values(metadataSearch.items).execute();

MetadataSearch - это родительская таблица, а Item - дочерняя таблица ForEach l oop устанавливает родительский идентификатор для дочерних записей

Вставка> 35000 дочерних записей выполняется очень быстро

...