v
Далее делаешь поиск различий между изначальным массивом цветов и полученными моделями из базы, те которые не существуют одним запросом записываешь. Их полученные идентификаторы кладёшь в тот же изначальный массив или повторяешь выборку - на выходе имеешь сразу id всех цветов которые уже существуют в базе за максимум 2-3 запроса в бд.
Далее уже переходишь к импорту из этой пачки 200 продуктов или что ты там импортируешь по той же схеме, вытягиваешь связующий идентификатор и скопом запрашиваешь одним запросом существующие продукты из базы, сравниваешь полученные данные из базы и данные в изначальном массиве. Разницу записываешь как «данные для создания», остальное данные для обновления.
Массив цветов у тебя уже существует. Осталось только обновить и создать записи. Обновление в цикле. Создание одним запросом.