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

varchar(max) wszędzie?

Używając VARCHAR(MAX) po prostu mówisz SQL Serverowi „przechowuj wartości w tym polu tak, jak widzisz najlepiej”, SQL Server następnie wybierze, czy przechowywać wartości jako zwykły VARCHAR lub jako LOB (duży obiekt). Ogólnie rzecz biorąc, jeśli przechowywane wartości są mniejsze niż 8000 bajtów, SQL Server będzie traktował wartości jako zwykły VARCHAR wpisz.

Jeśli przechowywane wartości są zbyt duże, kolumna może rozlać się ze strony na strony LOB, dokładnie tak samo jak w przypadku innych typów LOB (text , ntext i obraz ). .

W rzeczywistości w SQL Server 2008 lub nowszym dane mogą przepełnić się na dodatkowe strony, nawet w przypadku typów danych o stałej długości (np. VARCHAR(3000) ), jednak te strony są nazywane stronami przepełnienia wierszy i są traktowane nieco inaczej.

Wersja skrócona: z perspektywy przechowywania nie ma żadnych wad używania VARCHAR(MAX) ponad VARCHAR(N) dla niektórych N .

(Zauważ, że dotyczy to również innych typów pól o zmiennej długości NVARCHAR i VARBINARY )

FYI — nie możesz tworzyć indeksów w VARCHAR(MAX) kolumny



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać wartości kolumny w SQL oddzielone przecinkami?

  2. Tworzenie bazy danych w SQL Server 2012, skrypt i użycie w 2008?

  3. Instrukcja SQL Server RAISERROR z prostymi przykładami

  4. Przechowuj wiele wartości bitowych w jednej kolumnie tabeli

  5. Uzyskaj punkty przestrzenne w promieniu za pomocą NHibernate Spatial