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

Różnica między różnymi typami ciągów w SQL Server?

text i ntext są przestarzałe, więc pomińmy je na chwilę. Pozostały trzy wymiary:

  • Unicode (UCS-2) a inne niż Unicode:N przed nazwą oznacza Unicode
  • Stała długość a zmienna długość:var oznacza zmienną, w przeciwnym razie ustalona
  • W wierszu a BLOB:(max) ponieważ długość oznacza BLOB, w przeciwnym razie jest wartością w wierszu

Dzięki temu możesz odczytać znaczenie dowolnego typu:

  • CHAR(10) :jest w rzędzie o stałej długości nie-Unicode o rozmiarze 10
  • NVARCHAR(256) :jest Unicode o zmiennej długości w wierszu o rozmiarze do 256
  • VARCHAR(MAX) :to BLOB o zmiennej długości niebędący Unicode

Przestarzałe typy text i ntext odpowiadają nowym typom varchar(max) i nvarchar(max) odpowiednio.

Kiedy przechodzisz do szczegółów, znaczenie in-row w porównaniu z BLOB rozmywa się na małych długościach, ponieważ silnik może zoptymalizuj pamięć i wyciągnij BLOB w wierszu lub wepchnij wartość w wierszu do jednostki alokacji „mała BLOB”, ale to tylko szczegół implementacji. Zobacz Organizacja tabel i indeksów .

Z punktu widzenia programowania wszystkie typy:CHAR , VARCHAR , NCHAR , NVARCHAR , VARCHAR(MAX) i NVARCHAR(MAX) , obsługują jednolity interfejs API ciągów:Funkcje ciągów . Stare, przestarzałe typy TEXT i NTEXT nie obsługują ten interfejs API, mają oddzielny, zdeperowany, TEKSTOWY interfejs API do manipulowania. Nie należy używać przestarzałych typów.

Typy BLOB obsługują wydajne aktualizacje w miejscu przy użyciu kolumny UPDATE table SET column.WRITE(@value, @offset) składnia.

Różnica między typami o stałej i zmiennej długości znika podczas kompresji wiersza w tabeli. Po włączeniu kompresji wierszy typy o stałej długości i zmiennej długości są przechowywane w tym samym formacie, a końcowe spacje nie są przechowywane na dysku, patrz Implementacja kompresji wierszy . Zwróć uwagę, że kompresja strony oznacza kompresję wierszy.



  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 Server:dynamiczna klauzula where

  2. Jak zmienić tryb autoryzacji SQL Server bez Management Studio

  3. Szacowanie przyłączeń programu SQL Server przy użyciu zgrubnego wyrównania histogramu

  4. Jak zmienić kolumnę z wartości Null na Not Null w tabeli SQL Server — samouczek SQL Server / T-SQL, część 52

  5. Błędy:Instrukcja INSERT EXEC nie może być zagnieżdżona. i Nie można użyć instrukcji ROLLBACK w instrukcji INSERT-EXEC. Jak to rozwiązać?