2010-01-18 16 views
27

Reading this question wątpliwości poped mi do głowy:MySQL - TEKST vs CHAR i VARCHAR

  • char i varchar można zapisać do 255 znaków
  • tekst można zapisać do 65k znaków
  • wielkości char w bajtów wiele znaków
  • wielkość
  • VARCHAR bajtów wiele znaków stosowane + 1

Ile faktycznie bajtów zajmuje TEXT? ~ 65kb lub liczba znaków użyte + 1?

+5

http://stackoverflow.com/search?q=[mysql]+text+vs+varchar –

+0

Bardzo dobry link, dzięki! –

+2

'rozmiar varchar w bajtach to liczba użytych znaków + 1 'To zależy od kodowania użytego w tabeli. Może to być na przykład '((# znaków) * 2) + 1' dla znaków 2-bajtowych. Pamiętaj, że jest to liczba * znaków *, a nie liczba * bajtów *. –

Odpowiedz

24

TEXT to typ danych o zmiennej długości, z maksimum 65 000 znaków.

LONGTEXT może być używany dla ponad 4 trylionów znaków.

Aby odpowiedzieć na pytanie: jest to długość zmiennej, która zajmie tylko liczbę zapisanych znaków.

+4

Plus trochę narzut, aby wskazać, że długość - i LONGTEXT ma więcej narzutów niż TEKST ma więcej narzut niż VARCHAR. –

+3

Prawda: "LONG" w "LONGTEXT" faktycznie wskazuje, ile znaków. Długa wartość to 8 bajtów, więc narzut wynosi 8 bajtów. Chociaż to nieistotne, więc o tym nie wspomniałem. – Pindatjuh

+1

Logicznie, TEKST jest przechowywany jako BLOB –

7

TEXT zajmuje liczbę rzeczywistej długości danych + 2 bajty.

+0

Soooo, jeśli przechowujesz 256 lub więcej znaków, VARCHAR i TEXT zajmują tyle samo miejsca w pamięci masowej? – rinogo