2011-08-19 10 views
46

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?

+0

Duplikat: http://stackoverflow.com/questions/1962310/importance-of-varchar-length-in-mysql-table –

+0

Fragment blogu: http://goo.gl/Hli6G3 –

Odpowiedz

67

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"

+3

nie bajtów ale znaków :) – Karolis

+9

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

+0

@rinogo Czy to nie zależy od zestawu znaków? Czy zakładasz ASCII lub co? – mpen

8

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).

http://dev.mysql.com/doc/refman/5.0/en/char.html