Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jaka jest korzyść z posiadania pola varbinary w osobnej tabeli 1-1?

Nie ma wydajności ani przewagi operacyjnej. Od SQL 2005 typy LOB są już przechowywane dla Ciebie przez silnik w oddzielnej jednostce alokacji, osobnym b-drzewo. Jeśli zapoznasz się z Organizacja tabel i indeksów SQL Server zobaczysz, że każda partycja ma do 3 jednostek alokacji:danych, LOB i przepełnienia wierszy:


(źródło:s-msft.com )

Pole LOB (varchar(max), nvarchar(max), varbinary(max), XML, CLR UDTs, a także przestarzałe typy text, ntext i image) będą miały w samym rekordzie danych, w indeksie klastrowym, tylko bardzo mały ślad:wskaźnik do jednostki alokacji LOB, patrz Anatomia rekordu .

Przechowując LOB jawnie w osobnej tabeli nie zyskasz absolutnie nic . Po prostu dodajesz niepotrzebną złożoność, ponieważ poprzednie aktualizacje atomowe muszą teraz dystrybuować się do dwóch oddzielnych tabel, komplikując aplikację i strukturę transakcji aplikacji.

Jeśli zawartość LOB jest całym plikiem, być może powinieneś rozważyć uaktualnienie do SQL 2008 i użycie ŚCIEŻNIK PLIKÓW .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Naruszenie ograniczenia PRIMARY KEY

  2. Jak TRY_CAST() działa w SQL Server

  3. Problem z instrukcją CASE w procedurze składowanej serwera sql

  4. Wykonywać funkcję z wartościami przechowywanymi w tabeli w wielu wierszach?

  5. Jak zignorować tagi html w Sql Server 2008 Full Text Search