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

Тип текст на SQL Server спрямо тип данни varchar

TEXT се използва за големи части от низови данни. Ако дължината на полето надвишава определен праг, текстът се съхранява извън реда.

VARCHAR винаги се съхранява в ред и има ограничение от 8000 символи. Ако се опитате да създадете VARCHAR(x) , където x> 8000 , получавате грешка:

Сървър:Съобщение 131, ниво 15, състояние 3, ред 1

Размерът (), даден на типа „varchar“ надвишава максимално разрешения за всеки тип данни (8000)

Тези ограничения на дължината не се отнасят до VARCHAR(MAX) в SQL Server 2005 , който може да се съхранява извън реда, точно като TEXT .

Имайте предвид, че MAX тук не е вид константа, VARCHAR и VARCHAR(MAX) са много различни типове, като последният е много близък до TEXT .

В предишни версии на SQL Server не можахте да получите достъп до TEXT директно, можете да получите само TEXTPTR и го използвайте в READTEXT и WRITETEXT функции.

В SQL Server 2005 можете директно да получите достъп до TEXT колони (въпреки че все още се нуждаете от изрично прехвърляне към VARCHAR за да им присвоите стойност).

TEXT е добро:

  • Ако трябва да съхранявате големи текстове във вашата база данни
  • Ако не търсите по стойността на колоната
  • Ако избирате тази колона рядко и не се присъединявате към нея.

VARCHAR е добро:

  • Ако съхранявате малки струни
  • Ако търсите по стойността на низа
  • Ако винаги го избирате или го използвате в присъединявания.

Чрез избиране тук имам предвид издаването на всякакви заявки, които връщат стойността на колоната.

Чрез търсене тук имам предвид издаването на всякакви заявки, чийто резултат зависи от стойността на TEXT или VARCHAR колона. Това включва използването му във всеки JOIN или WHERE състояние.

Като TEXT се съхранява извън ред, като заявките не включват TEXT колона обикновено са по-бързи.

Някои примери за това какво е TEXT е добър за:

  • Коментари в блога
  • Уики страници
  • Източник на код

Някои примери за това, което VARCHAR е добър за:

  • Потребителски имена
  • Заглавия на страници
  • Имена на файлове

Като правило, ако някога се нуждаете от текстовата ви стойност да надхвърли 200 знаци И не използвайте присъединяване в тази колона, използвайте TEXT .

В противен случай използвайте VARCHAR .

P.S. Същото важи и за UNICODE активиран NTEXT и NVARCHAR също, което трябва да използвате за примери по-горе.

P.P.S. Същото важи и за VARCHAR(MAX) и NVARCHAR(MAX) че SQL Server 2005+ използва вместо TEXT и NTEXT . Ще трябва да активирате large value types out of row за тях с sp_tableoption ако искате те винаги да се съхраняват извън реда.

Както бе споменато по-горе итук , TEXT ще бъде остарял в бъдещи издания:

text in row опцията ще бъде премахната в бъдеща версия на SQL Server . Избягвайте да използвате тази опция в нова разработка и планирайте да модифицирате приложения, които в момента използват text in row . Препоръчваме ви да съхранявате големи данни, като използвате varchar(max) , nvarchar(max) , или varbinary(max) типове данни. За да контролирате поведението в ред и извън ред на тези типове данни, използвайте large value types out of row опция.



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

  2. Ще пропусне ли задание на SQL Server насрочено изпълнение, ако вече се изпълнява?

  3. Как да настроите производителността на SQL Server, Azure SQL база данни и Amazon RDS

  4. Разлика между DELETE и TRUNCATE таблица в SQL Server

  5. Добавяне на идентичност към съществуваща колона