2010-01-18 76 views
27

Reading this question nghi ngờ gì nữa poped ra trong đầu tôi:MySQL - TEXT vs CHAR và VARCHAR

  • char và varchar có thể lưu trữ lên đến 255 ký tự
  • văn bản có thể lưu trữ lên đến 65k chars
  • char kích thước trong byte là số ký tự
  • kích thước
  • varchar trong byte là số ký tự sử dụng + 1

Vậy TEXT thực sự chiếm bao nhiêu byte? ~ 65kb hoặc số ký tự sử dụng + 1?

+5

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

+0

Liên kết rất tốt, cảm ơn! –

+2

'Kích thước varchar theo byte là số ký tự được sử dụng + 1' Điều này thực sự phụ thuộc vào mã hóa được sử dụng trong bảng. Nó có thể, ví dụ, là '((# của ký tự) * 2) + 1' cho các ký tự 2 byte. Hãy nhớ rằng số lượng * ký tự * không phải là số * byte *. –

Trả lời

24

TEXT là loại dữ liệu có độ dài thay đổi, với tối đa 65.000 ký tự.

LONGTEXT có thể được sử dụng cho hơn 4 nghìn tỷ ký tự.

Để trả lời câu hỏi của bạn: đó là chiều dài thay đổi và nó sẽ chỉ chiếm số lượng ký tự bạn lưu trữ.

+4

Cộng thêm một chút chi phí để chỉ ra rằng độ dài - và LONGTEXT có nhiều chi phí hơn TEXT có chi phí cao hơn VARCHAR. –

+3

True: "LONG" trong "LONGTEXT" thực sự cho biết số lượng ký tự. Giá trị dài là 8 byte, vì vậy chi phí trên là 8 byte. Mặc dù nó không đáng kể, vì vậy tôi đã không đề cập đến nó. – Pindatjuh

+1

Về mặt logic, TEXT cũng được lưu trữ dưới dạng BLOB –

7

TEXT chiếm số lượng chiều dài dữ liệu thực tế của bạn + 2 byte.

+0

Soooo nếu bạn đang lưu trữ 256 ký tự trở lên, VARCHAR và TEXT có cùng dung lượng lưu trữ? – rinogo

Các vấn đề liên quan