Hay un muy buen artículo de Microsoft Research llamado To Blob o Not To Blob .
Su conclusión después de una gran cantidad de pruebas de rendimiento y análisis es la siguiente:
Si sus imágenes o documentos suelen tener un tamaño inferior a 256 KB, es más eficiente almacenarlos en una columna VARBINARIA de la base de datos
Si sus imágenes o documentos suelen tener un tamaño superior a 1 MB, almacenarlos en el sistema de archivos es más eficiente (y con el atributo FILESTREAM de SQL Server 2008, todavía están bajo control transaccional y son parte de la base de datos)
entre esos dos, es un poco difícil dependiendo de su uso
Si decide colocar sus imágenes en una tabla de SQL Server, le recomiendo encarecidamente que use una tabla separada para almacenar esas imágenes, no almacene la foto del empleado en la tabla del empleado, guárdelas en una tabla separada. De esa manera, la tabla de empleados puede mantenerse delgada, mala y muy eficiente, suponiendo que no siempre tenga que seleccionar la foto del empleado, como parte de sus consultas.
Para grupos de archivos, consulte Archivos y arquitectura de grupos de archivos para una introducción. Básicamente, crearía su base de datos con un grupo de archivos separado para grandes estructuras de datos desde el principio, o agregaría un grupo de archivos adicional más adelante. Llamémosle "LARGE_DATA".
Ahora, siempre que tenga una nueva tabla para crear que necesite almacenar columnas VARCHAR (MAX) o VARBINARY (MAX), puede especificar este grupo de archivos para los datos 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
¡Mira la introducción de MSDN en los grupos de archivos y juega con ella!