1) Это полностью противоречит тому, что я обычно проповедую, но вы можете сохранить их в базе данных SQL, так как они представляют собой небольшие файлы. SQL Server также позволил бы вам быстро и легко находить нужные вам файлы без сумасшедшей очистки диска, обычно связанной с перечислением такого большого каталога. Кроме того, хранение файлов в SQL (хотя я вообще против) значительно упростит процесс резервного копирования / восстановления.
2) Сохраните их все в каталогах и либо проиндексируйте их с помощью службы индексации Windows ( shivers ), либо создайте свой собственный индекс в SQL Server, который будет содержать имя файла и полный путь , Я бы предложил хранить их в отдельных каталогах, всего по несколько десятков тысяч файлов в каждом. Возможно, вы могли бы использовать год заказа в качестве имени папки?
Независимо от того, как они хранятся - не сканировать каталог, чтобы найти файлы - вам определенно понадобится какой-то индекс.
Надеюсь, это поможет!