sql >> Database teknologi >  >> RDS >> Sqlserver

Forskel mellem forskellige strengtyper i SQL Server?

text og ntext er forældede, så lad os udelade dem et øjeblik. Til det, der er tilbage, er der 3 dimensioner:

  • Unicode (UCS-2) vs. ikke-unicode:N foran navnet angiver Unicode
  • Fast længde vs. variabel længde:var angiver variabel, ellers fast
  • In-row vs. BLOB:(max) som længde angiver en BLOB, ellers er en in-row værdi

Så med dette kan du læse enhver types betydning:

  • CHAR(10) :er en i-række fast længde ikke-Unicode af størrelse 10
  • NVARCHAR(256) :er en Unicode med variabel længde i rækken med størrelse op til 256
  • VARCHAR(MAX) :er en BLOB variabel længde ikke-Unicode

De forældede typer text og ntext svarer til de nye typer varchar(max) og nvarchar(max) hhv.

Når du går til detaljer, betydningen af ​​in-row vs. BLOB sløres i små længder, da motoren optimer lageret og træk en BLOB i rækken eller skub en værdi i rækken ind i den 'lille BLOB' tildelingsenhed, men dette er kun en implementeringsdetalje. Se Tabel- og indeksorganisation .

Fra et programmeringssynspunkt, alle typer:CHAR , VARCHAR , NCHAR , NVARCHAR , VARCHAR(MAX) og NVARCHAR(MAX) , understøtter en ensartet streng API:String Functions . Den gamle, forældede, skriver TEXT og NTEXT gør ikke understøtter denne API, de har en separat, depereret, TEXT API at manipulere. Du bør ikke bruge de forældede typer.

BLOB-typer understøtter effektive in-place opdateringer ved at bruge UPDATE table SET column.WRITE(@value, @offset) syntaks.

Forskellen mellem typer med fast længde og variabel længde forsvinder ved rækkekomprimering på et bord. Med rækkekomprimering aktiveret, gemmes faste længdetyper og variabel længde i det samme format, og efterfølgende mellemrum gemmes ikke på disken, se Rækkekomprimeringsimplementering . Bemærk, at sidekomprimering indebærer rækkekomprimering.



  1. 'max_user_connections' sat til 200 - får stadig fejl

  2. Php-script til at beregne kumulative totaler for konti

  3. Høje netværks-TTFB-tider på lokal og fjernserver

  4. Brug af Workbench til at oprette forbindelse til ekstern MySQL-server via SSH-tunnel