sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad er fordelen ved at have et varbinært felt i en separat 1-1 tabel?

Der er ingen ydeevne eller operationelle fordele. Siden SQL 2005 er LOB-typerne allerede gemt for dig af motoren i en separat tildelingsenhed, et separat b-træ. Hvis du studerer Tabel- og indeksorganisation af SQL Server vil du se, at hver partition har op til 3 allokeringsenheder:data, LOB og række-overløb:


(kilde:s-msft.com )

Et LOB-felt (varchar(max), nvarchar(max), varbinary(max), XML, CLR UDT'er samt de forældede typer tekst, ntext og image) vil i selve dataposten, i det klyngede indeks, kun have en meget lille fodaftryk:en pegepind til LOB-allokeringsenheden, se Anatomy of a Record .

Ved at gemme en LOB eksplicit i en separat tabel vinder du absolut intet . Du tilføjer bare unødvendig kompleksitet, da tidligere atomopdateringer nu skal distribuere sig selv i to separate tabeller, hvilket komplicerer applikationen og applikationstransaktionsstrukturen.

Hvis LOB-indholdet er en hel fil, bør du måske overveje at opgradere til SQL 2008 og bruge FILESTREAM .



  1. Sådan fjerner du førende nuller fra datoer i Oracle

  2. Bruger du CTE som en blokløkke?

  3. python opret forbindelse til postgresql med libpq-pgpass

  4. Drop-begrænsning med specialtegn i Oracle