Có nhiều nơi VARCHAR
và TEXT
làm hoặc không khác nhau. Một số điều tôi nói:
- Nếu độ dài tối đa hơn 512 ký tự , đi với
TEXT
. - Không bao giờ sử dụng
TINYTEXT
- nó chỉ có các phủ định liên quan đếnVARCHAR(255)
. - Không sử dụng
VARCHAR(255)
; chọn một giá trị tối đa hợp lý thay vì 255. (Đây là một tối ưu hóa nhỏ liên quan đến bảng tạm thời trong các truy vấn phức tạp.) - Sử dụng
CHAR
chỉ dành cho những thứ có độ dài thực sự cố định. Trong hầu hết các trường hợp như vậy, hãy sử dụngCHARACTER SET ascii
(hoặc latin1). (Nếu không, nó sẽ chiếm nhiều dung lượng hơn bạn mong đợi. - Sử dụng
CHARACTER SET ut8mb4
. (Các trường hợp ngoại lệ ngày càng hiếm hơn.)
(Xin lỗi, tôi lạc đề. Quay lại chủ đề ...)
Tôi lập chỉ mục, trong bố cục của các hàng InnoDB (có 4 ROW_FORMATs
khác nhau ), v.v., VARCHAR(513)
về cơ bản sẽ không thể phân biệt được với TEXT
.
Một trong số ít đối số cho VARCHAR
là nó giới hạn cửa hàng trong độ dài đã cho. Nhưng tần suất như thế nào là quan trọng?