2011-08-19 47 views
46

Tôi tự hỏi, nếu tôi có VARCHAR 200 ký tự và tôi đặt một chuỗi 100 ký tự, nó sẽ sử dụng 200 byte hoặc nó sẽ chỉ sử dụng kích thước thực tế của chuỗi?Kích thước VARCHAR của MySQL?

+0

trùng lặp: http://stackoverflow.com/questions/1962310/importance-of-varchar-length-in-mysql-table –

+0

Một blog chi tiết: http://goo.gl/Hli6G3 –

Trả lời

67

100 ký tự.

Đây là var (variable) trong varchar: bạn chỉ lưu trữ những gì bạn nhập (và thêm 2 byte để lưu trữ chiều dài tối đa 65535)

Nếu nó là char(200) sau đó bạn luôn luôn muốn lưu trữ 200 ký tự , đệm với 100 gian

Xem các tài liệu: "The CHAR and VARCHAR Types"

+3

không phải byte nhưng ký tự :) – Karolis

+9

Để rõ ràng: Việc lưu trữ chuỗi 100 ký tự trong trường 'varchar (200)' sẽ mất 101 byte. Việc lưu trữ một chuỗi gồm 100 ký tự trong một trường 'varchar (256)' sẽ mất 102 byte. Đây là lý do tại sao bạn thấy 'varchar (255)' rất thường xuyên; 255 ký tự là chuỗi dài nhất bạn có thể lưu trữ trong loại 'varchar' của MySQL chỉ với một byte trên đầu. Bất cứ điều gì lớn hơn đòi hỏi hai byte trên cao. – rinogo

+0

@rinogo Điều đó không phụ thuộc vào bộ ký tự? Bạn có giả định ASCII hay cái gì? – mpen

8

VARCHAR có nghĩa rằng đó là một nhân vật biến dài, vì vậy nó chỉ sẽ mất một s nhiều không gian như là cần thiết. Nhưng nếu bạn biết điều gì đó về cấu trúc cơ bản, nó có thể có ý nghĩa để hạn chế VARCHAR với một số tiền tối đa.

Ví dụ: nếu bạn đang lưu trữ nhận xét từ người dùng, bạn có thể giới hạn trường nhận xét chỉ còn 4000 ký tự; nếu vậy, nó không thực sự làm cho bất kỳ ý nghĩa để làm cho bảng sql có một trường lớn hơn hơn VARCHAR (4000).

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