sql >> Databasteknik >  >> RDS >> Sqlserver

Vad är fördelen med att ha ett varbinärt fält i en separat 1-1-tabell?

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 .



  1. Hur man init MySql Database i Docker Compose

  2. Hur kan jag använda en samling i en Oracle SQL-sats

  3. Mysql-fråga GRUPP efter och BESTÄLL efter

  4. Översätta Salesforce-data till EDI-format