Hay un artículo realmente bueno 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 K, almacenarlos en una columna VARBINARY de la base de datos es más eficiente
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 forman parte de la base de datos)
entre esos dos, es un poco complicado dependiendo de su uso
Si decide poner sus imágenes en una tabla de SQL Server, le recomiendo encarecidamente utilizar una tabla separada para almacenar esas imágenes; no almacene la foto del empleado en la tabla de empleados; manténgalas en una tabla separada. De esa manera, la tabla de Empleados puede ser sencilla, mezquina y muy eficiente, asumiendo que no siempre es necesario seleccionar la foto del empleado también como parte de sus consultas.
Para grupos de archivos, consulte Archivos y Arquitectura de grupos de archivos para obtener una introducción. Básicamente, crearía su base de datos con un grupo de archivos separado para estructuras de datos grandes desde el principio o agregaría un grupo de archivos adicional más adelante. Llamémoslo "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
TEXTIMAGE_ON LARGE_DATA
¡Consulte la introducción de MSDN sobre grupos de archivos y juegue con ella!