Zastanawiam się, czy mam VARCHAR z 200 znakami i że wstawię ciąg 100 znaków, czy użyje on 200 bajtów, czy użyje rzeczywistego rozmiaru ciągu?Rozmiar VARCHAR MySQL?
Odpowiedz
100 znaków.
To var (zmienna) w varchar
: tylko przechowywać co wpisać (i dodatkowe 2 bajty do przechowywania długości zapisu do 65535)
jeśli było char(200)
Wtedy zawsze przechowywać 200 znaków , wyściełane z 100 miejsc
Zobacz docs: "The CHAR and VARCHAR Types"
nie bajtów ale znaków :) – Karolis
Aby było jasne: Przechowywanie ciągu znaków 100 znaków w polu 'varchar (200)' zajmie 101 bajtów. Przechowywanie ciągu 100 znaków w polu 'varchar (256)' zajmie 102 bajty. Dlatego tak często widzisz 'varchar (255)'; 255 znaków jest najdłuższym ciągiem, który możesz przechowywać w 'varchar' typu MySQL z tylko jednym bajtem narzutów. Wszystko większe wymaga dwóch bajtów narzutów. – rinogo
@rinogo Czy to nie zależy od zestawu znaków? Czy zakładasz ASCII lub co? – mpen
VARCHAR oznacza, że jest to znak o zmiennej długości, więc jest to tylko zajmie s dużo miejsca, jak to konieczne. Ale jeśli wiesz coś o podstawowej strukturze, może być sens ograniczenie VARCHAR do pewnej maksymalnej kwoty.
Na przykład, jeśli zapisywałeś komentarze od użytkownika, możesz ograniczyć pole komentarza do tylko 4000 znaków; jeśli tak, to nie ma sensu, aby tabela sql miała pole, które jest większe od niż VARCHAR (4000).
Duplikat: http://stackoverflow.com/questions/1962310/importance-of-varchar-length-in-mysql-table –
Fragment blogu: http://goo.gl/Hli6G3 –