Es gibt keinen Leistungs- oder Betriebsvorteil. Seit SQL 2005 gibt es die LOB-Typen bereits von der Engine in einer separaten Zuordnungseinheit, einem separaten B-Baum, für Sie gespeichert. Wenn Sie den Tabellen- und Indexorganisation von SQL Server sehen Sie, dass jede Partition bis zu 3 Zuordnungseinheiten hat:Daten, LOB und Zeilenüberlauf:
(Quelle:s-msft.com
)
Ein LOB-Feld (varchar(max), nvarchar(max), varbinary(max), XML, CLR UDTs sowie die veralteten Typen text, ntext und image) wird im Datensatz selbst, im Clustered Index, nur noch a sehr kleiner Fußabdruck:ein Zeiger auf die LOB-Zuweisungseinheit, siehe Anatomy of a Record .
Indem Sie ein LOB explizit in einer separaten Tabelle speichern, gewinnen Sie absolut nichts . Sie fügen nur unnötige Komplexität hinzu, da frühere atomare Updates sich jetzt in zwei separate Tabellen verteilen müssen, was die Anwendung und die Transaktionsstruktur der Anwendung verkompliziert.
Wenn der LOB-Inhalt eine ganze Datei ist, sollten Sie vielleicht ein Upgrade auf SQL 2008 in Betracht ziehen und FILESTREAM .