パフォーマンスに関する質問ではよくあることですが、結果はかなり異なる場合があるため、答えは次のとおりです。
開始する場所は、現在行っていることを行うのにどれくらいの時間がかかるかを測定することです。これが完了したら、次のことを自問してください。これで十分な速さですか? 物事を行うための最速の方法ではないかもしれませんが、それでも非常に高速であるため、速度は問題ではありません。
ファイル グロブの取得に費やされるページの処理時間はどれくらいですか? 1%?10%? 50%? このパーセンテージが高いほど、やり方を変えることを検討する価値が高くなります。
また、サイト全体のパフォーマンスはどうですか?各ページの読み込み速度を 2 倍にしたら、人々は気付くでしょうか? そうでない場合は、パフォーマンス チューニングを行うべき明らかな場所が見つかったとしても、まだパフォーマンス チューニングを行う価値がない可能性があります。
改善できると思われる場合は、データベースを使用して機能を実装し、それがより高速かどうかを測定してください。繰り返しますが、これを使用した結果は非常に変動する可能性があります。たとえば、データベースに大きな負荷がかかっている場合、データベースから結果を取得するのが非常に遅くなる可能性があります。ほとんど使用されていない非常に強力なデータベースがある場合、それは非常に高速である可能性があります。テストだけが真実を教えてくれます。
ディスク上の実際のファイルに基づいてファイル名を見つけるため、現在行っている方法がよりシンプルで保守しやすいように思われることを付け加えておきます。データベースを使用しようとすると、データベース内のファイル名のリストとファイルシステム内のファイルのリストの同期について心配する必要があります。
ただし、1 つのディレクトリに非常に多数のファイルが含まれていると、多くのファイルシステムのパフォーマンスが低下することに注意してください。このような場合は、ファイルを複数のサブディレクトリに分割することを検討してください。一般的なアプローチは、az という名前のディレクトリを作成し、「a」で始まるすべてのファイルを「a」ディレクトリに、「b」で始まるすべてのファイルを「b」ディレクトリに、というように配置することです。何万ものファイルがあると重要であり、その場合でも、特定のファイルシステムとそれが実行されるハードウェアに依存します。
(コメントに基づいて編集:)
結果を事前に計算してデータベースに保存することについて話しているので、データベースに入れるよりも良いアプローチは、http://memcached.org/ のようなキャッシュ サーバーを使用することです。これはハイブリッド アプローチと見なすことができます。つまり、現在と同じように処理を行いますが、結果が必要になるたびに、最初にキャッシュをチェックして結果が含まれているかどうかを確認します。そうであれば、キャッシュされた結果を使用し、そうでなければ、新しいグロブを計算します。これにより、データベースとファイルシステムの同期を維持するという問題が回避されます。これは、古いキャッシュ エントリが期限切れになり、新しい正しいエントリに置き換えられる可能性があるためです。