画像をMEDIUMBLOBとしてデータベース(MySQL 5.6.15、InnoDB)に保存することを計画しており、どのテーブル構造がより効果的か知りたいです。
すべての画像について、チェックサムを保存します。チェックサムが最初にチェックされるたびに、画像を更新する必要があるかどうかを確認します。チェックサムは毎回アクセスされますが、画像がアクセスされない可能性があることを考えると、1つのテーブルまたは2つの別々のテーブルに保存すると、(パフォーマンスに)違いが生じますか?
| user_id | 写真| picture_checksum |
または
| user_id | 写真|
| user_id | picture_checksum |
(追記:「ファイルシステムとデータベース」の議論には入りたくありません。データベースを使用することになります。)
データは本質的に関連しており、X対多の関係がないため、単一のテーブルがここに移動する方法です。
単純なクエリを実行するときは、画像を読み込まないように注意してください。SELECT *
そのデータを使用したことがない場合、接続を介してメガバイトのデータをスラミングする結果になる場合は、悪い考えです。
代わりに、できるだけ正確にしてください。
SELECT picture_checksum FROM pictures WHERE user_id=?
注意として、単純なチェックサムよりも、SHA1のようなより堅牢で衝突耐性のあるものを使用することをお勧めします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加