VARCHAR
được lưu trữ nội tuyến với bảng. VARCHAR
nhanh hơn khi kích thước hợp lý, sự cân bằng sẽ nhanh hơn tùy thuộc vào dữ liệu và phần cứng của bạn, bạn muốn đánh giá một kịch bản thế giới thực với dữ liệu của mình.
Số byte tối đa hiệu dụng có thể được lưu trữ trong VARCHAR
hoặc VARBINARY
cột phải tuân theo kích thước hàng tối đa là 65,535 bytes
, được chia sẻ giữa tất cả các cột.
Ví dụ:VARCHAR(255)
cột có thể chứa một chuỗi có độ dài tối đa là 255 ký tự. Giả sử rằng cột sử dụng bộ ký tự latin1 (một byte cho mỗi ký tự), dung lượng lưu trữ thực tế cần thiết là độ dài của chuỗi (L), cộng với một byte để ghi độ dài của chuỗi. Đối với chuỗi 'abcd'
, L
là 4
và yêu cầu lưu trữ là năm byte. Nếu cùng một cột được khai báo để sử dụng ucs2
bộ ký tự hai byte, yêu cầu lưu trữ là 10 byte:Độ dài của 'abcd' là tám byte và cột yêu cầu hai byte để lưu trữ độ dài vì độ dài tối đa lớn hơn 255 (tối đa 510 bytes
).
Để có dữ liệu lớn hơn, hãy cân nhắc sử dụng TEXT
hoặc BLOB
. TEXT
và BLOB
các cột được triển khai khác nhau trong NDB
công cụ lưu trữ, trong đó mỗi hàng trong một TEXT
cột được tạo thành từ hai phần riêng biệt. Một trong số này có kích thước cố định (256 bytes)
, và thực sự được lưu trữ trong bảng gốc. Cái kia bao gồm bất kỳ dữ liệu nào vượt quá 256 bytes
, được lưu trữ trong một bảng ẩn. Các hàng trong bảng thứ hai này luôn là 2,000 bytes
Dài. Điều này có nghĩa là kích thước của TEXT
cột là 256
if size <= 256
(trong đó kích thước đại diện cho kích thước của hàng); nếu không, kích thước là 256 + size + (2000 – (size – 256) % 2000)
.
http://dev.mysql.com/doc/refman /5.6/en/storage-requirements.html
Phụ thuộc vào mối quan hệ cơ sở dữ liệu của bạn, nếu bạn hiếm khi sử dụng các trường đó trong truy vấn. Ví dụ để biết thêm thông tin. Tạo bảng tách biệt là tùy chọn tốt (chuẩn hóa).
LƯU Ý: VARCHAR
khác với CHAR
. Nếu bạn tạo VARCHAR(250)
và chỉ chèn 20
các ký tự trên đó thì nó sẽ chiếm 5 bytes
+ L
khác với CHAR(250)
, nó sẽ mất 250 bytes
+ L
cho cùng một điều kiện.