回答:
Microsoft ResearchによるTo BlobまたはNot To Blobという非常に優れた論文があります。
多数のパフォーマンステストと分析を行った後の結論は次のとおりです。
画像またはドキュメントのサイズが通常256KB未満の場合、それらをデータベースのVARBINARY列に保存する方が効率的です
画像またはドキュメントのサイズが通常1 MBを超える場合、それらをファイルシステムに保存する方が効率的です(SQL Server 2008のFILESTREAM属性を使用しても、トランザクションやデータベースの一部として機能します)。
これら2つの間に、あなたの使用に応じて少しトスアップです。
写真をSQL Serverテーブルに入れる場合は、それらの写真を保存するために別のテーブルを使用することを強くお勧めします。従業員の写真は従業員テーブルに保存せず、別のテーブルに保管してください。このように、クエリの一部として常に従業員の写真も選択する必要がない場合を想定して、従業員テーブルは無駄のない、平均的で非常に効率的なままにすることができます。
ファイルグループについては、ファイルとファイルグループアーキテクチャの概要をご覧ください。基本的に、最初から大きなデータ構造用の個別のファイルグループを使用してデータベースを作成するか、後で追加のファイルグループを追加します。「LARGE_DATA」としましょう。
これで、VARCHAR(MAX)またはVARBINARY(MAX)列を格納する必要がある新しいテーブルを作成するときはいつでも、大きなデータに対してこのファイルグループを指定できます。
CREATE TABLE dbo.YourTable
(....... define the fields here ......)
ON Data -- the basic "Data" filegroup for the regular data
TEXTIMAGE_ON LARGE_DATA -- the filegroup for large chunks of data
ファイルグループのMSDNイントロをチェックして、それをいじってください!
私は一度このジレンマに陥り、意見を求めてグーグルでかなり調査しました。私が見つけたのは、mySQLでは特にPHPなどの言語からのアクセスが容易になる一方で、実際には多くの人が大きいイメージの方がイメージをディスクに保存するのに適していることです。
同様の質問を見つけました
小さなPNG画像を保存するためのMySQL BLOB対ファイル?
私の最終的な評決は、プロフィール写真など、ユーザーごとに存在する必要がある小さな正方形の画像などの場合、mySQLは一連のつまみをhddに保存するよりも優れている一方で、フォトアルバムなどの場合はフォルダー/ imageファイルの方が優れています。
それが役に立てば幸い
Webサーバーのカタログではなくデータベースに画像を保存するのが良い理由。
サーバー上のフォルダーに保存された多くの画像を使用して、クライアントが何年も使用しているアプリケーションを作成しました。
今、彼らはあなたのところにやって来ます。彼らのサーバーは破壊されており、新しいサーバーに復元する必要があります。彼らはもう古いサーバーにアクセスできません。彼らが持っている唯一のバックアップはデータベースのバックアップです。
もちろんソースがあり、それを新しいサーバーに簡単にデプロイし、SqlServerをインストールしてデータベースを復元できます。しかし、今はすべての写真が消えています。
SqlServerに画像を保存した場合、すべてが以前と同様に機能します。
ちょうど私の2セント。
MSによると、SQL Serverにイメージを格納する場合は「image」データ型を使用しないでください。これは、新しいバージョンのSQL Serverでは段階的に廃止される予定です。代わりにvarbinary(max)を使用してください
2012年にリリースされた別のオプションは、ファイルテーブルと呼ばれています:https : //msdn.microsoft.com/en-us/library/ff929144.aspx