Det finns ingen prestanda eller operativ fördel. Sedan SQL 2005 är LOB-typerna redan lagras åt dig av motorn i en separat tilldelningsenhet, ett separat b-träd. Om du studerar Tabell- och indexorganisation av SQL Server kommer du att se att varje partition har upp till 3 allokeringsenheter:data, LOB och radöverflöde:
(källa:s-msft.com
)
Ett LOB-fält (varchar(max), nvarchar(max), varbinary(max), XML, CLR UDTs såväl som de föråldrade typerna text, ntext och image) kommer att ha i själva dataposten, i det klustrade indexet, endast en mycket litet fotavtryck:en pekare till LOB-tilldelningsenheten, se Anatomy of a Record .
Genom att lagra en LOB explicit i en separat tabell vinner du absolut ingenting . Du lägger bara till onödig komplexitet eftersom tidigare atomuppdateringar nu måste distribuera sig själva i två separata tabeller, vilket komplicerar applikationen och applikationstransaktionsstrukturen.
Om LOB-innehållet är en hel fil bör du kanske överväga att uppgradera till SQL 2008 och använda FILESTREAM .