Điều này phụ thuộc vào việc bạn đang sử dụng nó để làm gì. Tôi ghét phải đưa ra một câu trả lời chung chung như vậy, nhưng đó là sự thật. Nói chung, hãy cố gắng lấy loại dữ liệu cụ thể nhất có thể. Nếu chuỗi của bạn không bao giờ vượt quá một số ký tự giới hạn trên, thì hãy đi với VARCHAR
bởi vì nó sẽ hiệu quả hơn một chút. Nếu bạn cần thêm dung lượng, hãy sử dụng TEXT
. Nếu bạn không chắc văn bản của mình sẽ chiếm bao nhiêu dung lượng, có lẽ bạn nên sử dụng TEXT
; sự khác biệt về hiệu suất không quá lớn và tốt hơn là nên chứng minh trong tương lai hơn là rủi ro phải thay đổi nó sau này khi yêu cầu của bạn thay đổi. Chỉ hai xu của tôi.
Trong các nhận xét, Pitarou chỉ ra rằng, nếu MySQL tạo một bảng tạm thời cho truy vấn của bạn (xem cái này
), TEXT
các cột sẽ không được lưu trữ trong bộ nhớ và sẽ phải được đọc từ đĩa, tốc độ này chậm hơn nhiều. ( Nguồn
, cuối trang.) Tuy nhiên, điều này không thành vấn đề đối với hầu hết các truy vấn.
Trong trường hợp có ai đó thắc mắc về cách so sánh giữa PostgreSQL, tôi đã tìm thấy điểm chuẩn này điều đó cho thấy CHAR, VARCHAR và TEXT đều hoạt động tốt như nhau. Vì vậy, nếu bạn đang sử dụng Postgres, không quan trọng bạn sử dụng loại nào.