Има наистина добра статия от Microsoft Research, наречена To Blob or Not To Blob .
Тяхното заключение след голям брой тестове и анализи на ефективността е следното:
-
ако вашите снимки или документ обикновено са с размер под 256K, съхраняването им в колона VARBINARY на база данни е по-ефективно
-
ако вашите снимки или документ обикновено са с размер над 1 MB, съхраняването им във файловата система е по-ефективно (и с атрибута FILESTREAM на SQL Server 2008 те все още са под транзакционен контрол и са част от базата данни)
-
между тези две, това е малко подхвърляне в зависимост от вашата употреба
Ако решите да поставите вашите снимки в таблица на 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 за файлови групи и си поиграйте с него!