sql >> Database >  >> RDS >> Sqlserver

Wat is het voordeel van het hebben van een varbinary-veld in een aparte 1-1-tabel?

Er is geen prestatie of operationeel voordeel. Sinds SQL 2005 zijn de LOB-types al voor u opgeslagen door de engine in een aparte allocatie-eenheid, een aparte b-tree. Als je de Tabel- en indexorganisatie van SQL Server ziet u dat elke partitie maximaal 3 toewijzingseenheden heeft:data, LOB en row-overflow:


(bron:s-msft.com )

Een LOB-veld (varchar(max), nvarchar(max), varbinary(max), XML, CLR UDT's evenals de verouderde typen tekst, ntext en afbeelding) zal in het gegevensrecord zelf, in de geclusterde index, alleen een zeer kleine footprint:een verwijzing naar de LOB-toewijzingseenheid, zie Anatomie van een record .

Door een LOB expliciet in een aparte tabel op te slaan wint u absoluut niets . Je voegt gewoon onnodige complexiteit toe, aangezien eerdere atomaire updates zichzelf nu moeten distribueren in twee aparte tabellen, wat de applicatie en de applicatietransactiestructuur compliceert.

Als de LOB-inhoud een volledig bestand is, kunt u misschien overwegen om te upgraden naar SQL 2008 en FILESTREAM .



  1. Is er een equivalent van SHA1() in MS-SQL?

  2. While en for-lus werken niet

  3. Postgres - voeg twee kolommen samen tot één item

  4. Maak verbinding met een externe postgresql-server op amazon ec2