To Blob or Not To Blobと呼ばれる Microsoft Research による非常に優れた論文があります。
多数のパフォーマンス テストと分析を行った後の結論は次のとおりです。
写真やドキュメントのサイズが通常 256K 未満の場合は、データベース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 のイントロをチェックして、いろいろ試してみてください。