Также мне не очень понятно зачем проверять есть ли запись в базе или нет.
Как я понимаю вы выгружаете из 1с полный список товаров со всеми текущими изменениями, следовательно дроп старую таблицу и криэйт новую будет по-моему быстрее.
Или же из базы выгружать только новые и только изменённые, тогда я сомневаюсь что счёт пойдёт на тысячи.