Има наистина добър документ от 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 за файловите групи и си поиграйте с него!