Er is een heel goed artikel van Microsoft Research genaamd To Blob or Not To Blob .
Hun conclusie na een groot aantal prestatietests en analyses is dit:
-
als uw afbeeldingen of document doorgaans kleiner zijn dan 256K, is het efficiënter om ze op te slaan in een database VARBINARY-kolom
-
als uw afbeeldingen of document doorgaans groter zijn dan 1 MB, is het efficiënter om ze in het bestandssysteem op te slaan (en met het FILESTREAM-attribuut van SQL Server 2008 staan ze nog steeds onder transactiebeheer en maken ze deel uit van de database)
-
tussen die twee, het is een beetje een toss-up, afhankelijk van uw gebruik
Als u besluit uw foto's in een SQL Server-tabel te plaatsen, raad ik u ten zeerste aan om een aparte tabel te gebruiken om die foto's op te slaan - sla de werknemersfoto's niet op in de werknemerstabel - bewaar ze in een aparte tabel. Op die manier kan de werknemerstabel slank en gemeen en zeer efficiënt blijven, ervan uitgaande dat u niet altijd ook de werknemersfoto hoeft te selecteren als onderdeel van uw vragen.
Bekijk voor bestandsgroepen Bestanden en bestandsgroeparchitectuur voor een inleiding. In principe zou u ofwel uw database vanaf het begin met een aparte bestandsgroep voor grote gegevensstructuren maken, of later een extra bestandsgroep toevoegen. Laten we het "LARGE_DATA" noemen.
Wanneer u nu een nieuwe tabel moet maken waarin VARCHAR(MAX)- of VARBINARY(MAX)-kolommen moeten worden opgeslagen, kunt u deze bestandsgroep specificeren voor de grote gegevens:
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
Bekijk de MSDN-intro over bestandsgroepen en speel ermee!