Вы можете использовать CsvEncoder
напрямую без Сериализатора, вы используете декодирование без денормализации.
Я различаю 2 способа улучшения производительности
Без изменения кода
Вы должны индексировать пару ref-dos
в вашу базу данных, это действительно увеличит время запроса.
Но время выполнения вашего скрипта будет увеличиваться с увеличением количества строк в вашем файле.
Один большой запрос
Вы можете один раз проанализировать ваш файл, извлечь все dos
и ref
, а затем построить массив с парой ref-dos
.
Пример: [ABCD-1234
, BCDE-2345
, ...]
После этого вы можете сделать ONE
большой запрос к вашей базе данных и избежать одного запроса / строки, что IMO занимает очень много времени.
Этот способ меньше связан с количеством строк, потому что вы запрашиваете базу данных один раз.
Таким образом, ИМО является лучшим
Кроме того, вы можете объявить $used_metas
и $repo
вне времени.
Вы уже используете пакетную очистку + диспетчер сущностей, это хороший способ при вставке многих сущностей с помощью Doctrine.
Если вы действительно хотите идти быстро, вы можете использовать сырой SQL и избежать гидратации сущности доктрины. Но я не рекомендую тебя таким образом