Det finns en riktigt bra artikel från Microsoft Research som heter To Blob or Not To Blob.
Deras slutsats efter ett stort antal prestandatester och analyser är denna:
-
om dina bilder eller dokument vanligtvis är mindre än 256 KB är det mer effektivt att lagra dem i en databas VARBINARY-kolumn
-
om dina bilder eller dokument vanligtvis är större än 1 MB är lagringen av dem i filsystemet mer effektiv (och med SQL Server 2008:s FILESTREAM-attribut är de fortfarande under transaktionskontroll och en del av databasen)
-
mellan dessa två, det är lite av en toss-up beroende på din användning
Om du bestämmer dig för att lägga in dina bilder i en SQL Server-tabell, rekommenderar jag starkt att du använder en separat tabell för att lagra dessa bilder - lagra inte medarbetarfotot i personaltabellen - håll dem i en separat tabell. På så sätt kan tabellen Anställd förbli mager och elak och mycket effektiv, förutsatt att du inte alltid behöver välja anställds foto också, som en del av dina frågor.
För filgrupper, kolla in Files and Filegroup Architecture för en introduktion. I grund och botten skulle du antingen skapa din databas med en separat filgrupp för stora datastrukturer redan från början, eller lägga till en ytterligare filgrupp senare. Låt oss kalla det "LARGE_DATA".
Nu, när du har en ny tabell att skapa som behöver lagra VARCHAR(MAX) eller VARBINARY(MAX) kolumner, kan du ange denna filgrupp för stora data:
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
Kolla in MSDN-introt om filgrupper och lek med det!