Existe um artigo realmente bom da Microsoft Research chamado To Blob ou Not To Blob .
Sua conclusão após um grande número de testes e análises de desempenho é a seguinte:
se suas fotos ou documentos tiverem normalmente menos de 256 KB de tamanho, armazená-los em uma coluna VARBINARY do banco de dados será mais eficiente
se suas fotos ou documentos geralmente têm mais de 1 MB, armazená-los no sistema de arquivos é mais eficiente (e com o atributo FILESTREAM do SQL Server 2008, eles ainda estão sob controle transacional e fazem parte do banco de dados)
entre os dois, é um pouco complicado dependendo do seu uso
Se você decidir colocar suas fotos em uma tabela do SQL Server, recomendo o uso de uma tabela separada para armazenar essas fotos - não armazene a foto do funcionário na tabela de funcionários - mantenha-as em uma tabela separada. Dessa forma, a tabela Employee pode permanecer enxuta, mesquinha e muito eficiente, supondo que você nem sempre precise selecionar a foto do funcionário, como parte de suas consultas.
Para grupos de arquivos, consulte Arquitetura de arquivos e grupos de arquivos de para obter uma introdução. Basicamente, você pode criar seu banco de dados com um grupo de arquivos separado para grandes estruturas de dados desde o início ou adicionar um grupo de arquivos adicional posteriormente. Vamos chamá-lo de "LARGE_DATA".
Agora, sempre que houver uma nova tabela para criar, que precisa armazenar as colunas VARCHAR (MAX) ou VARBINARY (MAX), você pode especificar este grupo de arquivos para os dados grandes:
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
Confira a introdução do MSDN nos grupos de arquivos e brinque com ela!