Một VARCHAR
dài được lưu trữ theo cách giống như một TEXT
/ BLOB
trường trong InnoDB
(mà tôi cho rằng bạn đang sử dụng cho giao dịch, tính toàn vẹn tham chiếu và khôi phục sự cố, phải không?) - nghĩa là bên ngoài phần còn lại của bảng trên đĩa (có thể yêu cầu đọc đĩa khác để truy xuất).
Trừ khi bạn cần lập chỉ mục các cột này (trong trường hợp đó là VARCHAR
nhanh hơn nhiều) không có lý do gì để sử dụng VARCHAR
qua TEXT
cho các trường dài - có một số tối ưu hóa công cụ cụ thể trong MySQL
để điều chỉnh truy xuất dữ liệu theo độ dài và bạn nên sử dụng loại cột chính xác để tận dụng lợi thế của chúng.
Trong trường hợp bạn đang sử dụng MyISAM
thảo luận chuyên sâu về chủ đề này tại đây .