Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Каква е ползата от наличието на varbinary поле в отделна таблица 1-1?

Няма производителност, нито оперативно предимство. От SQL 2005 типовете LOB са вече съхранявани за вас от двигателя в отделна единица за разпределение, отделно b-дърво. Ако изучавате Организация на таблици и индекси на SQL Server ще видите, че всеки дял има до 3 единици за разпределение:данни, LOB и препълване на редове:


(източник:s-msft.com )

LOB поле (varchar(max), nvarchar(max), varbinary(max), XML, CLR UDT, както и отхвърлените типове text, ntext и image) ще има в самия запис на данни, в клъстерирания индекс, само a много малък отпечатък:указател към единицата за разпределение на LOB, вижте Анатомия на запис .

Като съхранявате LOB изрично в отделна таблица не печелите абсолютно нищо . Вие просто добавяте ненужна сложност, тъй като предишните атомарни актуализации трябва сега да се разпределят в две отделни таблици, усложнявайки приложението и структурата на транзакцията на приложението.

Ако съдържанието на LOB е цял файл, тогава може би трябва да помислите за надграждане до SQL 2008 и използване на FILESTREAM .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете списък с начални и крайни стойности от таблицата с дати и часове

  2. свържете се към sql сървър с помощта на jdbc

  3. Върнете името на локалния сървър в SQL Server с @@SERVERNAME

  4. Формиране на низ за връзка за свързаност на Android към SQLServer

  5. Схема на база данни, автоинкремент