Наличие большого количества файлов в одном каталоге может замедлить работу. Вы правы разделить это. Однако вы можете попытаться уменьшить длину, используя все буквенно-цифровые символы в именах путей.
Если бы у вас было:
/images/[a-z0-9]{3}/[a-z0-9]{3}/[a-z0-9]{3}.jpg
/images/abc/def/ghi.jpg
С учетом вышеизложенного вы можете хранить 101559956668416 изображений. Это кажется смешным, так что, возможно, что-то вроде:
/images/[a-z0-9]{2}/[a-z0-9]{2}.jpg
/images/ab/cd.jpg
С учетом вышеизложенного вы можете хранить 1679616 изображений. Это разумное число, но может быть недостаточно для ваших нужд. Так как насчет этого:
/images/[a-z0-9]{2}/[a-z0-9]{2}/[a-z0-9]{2}.jpg
/images/ab/cd/ef.jpg
Это позволяет использовать 2176782336 (2 миллиарда) изображений, и в каждом каталоге будет максимум 1296 дочерних файлов / каталогов.
Смешайте несколько заглавных букв и, возможно, даже некоторые символы, и вы сможете получить еще меньше.
Лично я бы пошел с последним вариантом, хотя. Кажется, это хороший баланс.