画像アップロードする時に、1つのフォルダにアップロードするのではなく、
/年/月/ファイル名

とわける方法があります。(WordPressとか)

しかしこの場合、ファイルを編集(入れ替える)時に以下の処理が必要になります。

1:編集するファイルの登録日を取得
2:1のフォルダ内にファイルが存在するか確認
3:存在していたら削除する
4:更新日のフォルダを作成
5:4のフォルダにファイルをアップロード

この処理を行うと「登録日のフォルダにファイルがひとつも存在しない」
と言った可能性があり、空フォルダになります。

空のままにしたくない場合は
{他にファイルが存在しない場合はフォルダごと削除}
と言った処理も必要になります。

ファイルをDBで管理している場合は、何度もクエリーを投げる必要があり、
無駄が多い気がするのですが、いかがでしょうか?