1. Скорость работы с кучей файлов теоретически такая же как и с базой. Но вот кеширование файловой системы и базы идет по разному. И если при обращении к таблице, она у вас сразу вся закешируется, то вот закешировать 300.000 файлов/каталогов не так просто.
2.
При доступе к сайту обычно обрабатывают чпу-урл через пхп и ищут в базе, у меня всегда был вопрос почему не создавать реальные директории и в них класть php файлик с id и т.п чтобы потом быстро найти данные в б.д."
Потому что ID у файлика достаточно сложно раскладывается на каталоги таким образом, чтобы это было равномерно. файлы могут добавляться и удаляться не удобно, в итоге может выйти в одном каталоге 100 файлов, в другом 100 тысяч, и перераспределять все это на ходу - не выйдет. Поэтому гораздо проще файлы распределять не в зависимости от ID, а в зависимости от наполнения папок, а путь к файлу уже хранить в базе, в которой есть ID.