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

Dlaczego nie użyć varchar(max)?

Moja odpowiedź na to pytanie nie dotyczy korzystania z Maxa, ale dotyczy powodu VARCHAR(max) vs TEXT.

W mojej książce; po pierwsze, chyba że masz absolutną pewność, że nigdy nie zakodujesz niczego poza tekstem w języku angielskim, a ludzie nie będą odwoływać się do nazw obcych lokalizacji, wtedy powinieneś użyć NVARCHAR lub NTEXT.

Po drugie, to właśnie umożliwiają pola.

TEXT jest trudny do zaktualizowania w porównaniu z VARCHAR, ale zyskujesz przewagę indeksowania pełnego tekstu i wielu sprytnych rzeczy.

Z drugiej strony, VARCHAR(MAX) ma pewną niejednoznaczność, jeśli rozmiar komórki wynosi <8000 znaków, będzie traktowany jako dane wiersza. Jeśli jest większa, będzie traktowana jako LOB do celów przechowywania. Ponieważ nie możesz tego wiedzieć bez zapytania RBAR, może to mieć strategie optymalizacji dla miejsc, w których musisz mieć pewność co do swoich danych i ile odczytów to kosztuje.

W przeciwnym razie, jeśli twoje użycie jest stosunkowo przyziemne i nie spodziewasz się problemów z rozmiarem danych (tzn. używasz .Net i dlatego nie musisz martwić się rozmiarem swoich obiektów typu string/char*) wtedy użycie VARCHAR(max) jest w porządku.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CROSS JOIN vs INNER JOIN w SQL

  2. Wprowadzanie dynamicznie generowanej tabeli przestawnej do tabeli temp

  3. SQL Server 2008 Pusty ciąg a spacja

  4. porównaj wartości oddzielone przecinkami w sql

  5. Agregat może nie pojawić się na liście zestawów instrukcji UPDATE