ToBlobまたはNotToBlobと呼ばれるMicrosoftResearchによる非常に優れた論文があります。
多数のパフォーマンステストと分析を行った後の結論は次のとおりです。
-
写真やドキュメントのサイズが通常256K未満の場合は、データベースのVARBINARY列に保存する方が効率的です
-
写真やドキュメントのサイズが通常1MBを超える場合は、ファイルシステムに保存する方が効率的です(SQL Server 2008のFILESTREAM属性を使用すると、トランザクション制御下にあり、データベースの一部になります)
-
これら2つの間では、用途によっては少し混乱します
写真をSQLServerテーブルに配置する場合は、それらの写真を保存するために別のテーブルを使用することを強くお勧めします。従業員の写真を従業員テーブルに保存しないでください。別のテーブルに保存してください。そうすれば、クエリの一部として従業員の写真も常に選択する必要がない場合、従業員テーブルは無駄のない、平均的で非常に効率的な状態を保つことができます。
ファイルグループについては、ファイルとファイルグループアーキテクチャでイントロを確認してください。基本的に、大規模なデータ構造用に最初から別のファイルグループを使用してデータベースを作成するか、後でファイルグループを追加します。それを「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イントロをチェックして、試してみてください。