2010-11-08 7 views
9

Chúng tôi có một bảng lịch sử rất lớn chứa một cột có tối đa 500 ký tự UTF8 và không gian đĩa phát triển rất nhanh!MySQL TEXT hoặc VARCHAR

Chúng tôi đang có ít nhất 2 triệu hàng mỗi ngày ... và chúng tôi đã tự hỏi điều gì sẽ thực hiện công việc tốt hơn (chủ yếu là lưu trữ nhưng trong hoạt động)? TEXT hoặc VARCHAR (512)?

+1

http://www.pythian.com/news/7129/text-vs-varchar/ –

Trả lời

11

VARCHAR có lẽ thích hợp hơn trong trường hợp của bạn từ góc nhìn lưu trữ và hiệu suất. Xem này oft-reposted article.

2

This là thông tin hữu ích; Tôi nghĩ rằng nói chung, câu trả lời là varchar thường là đặt cược tốt hơn.

1

Từ hướng dẫn MySQL:

Trong hầu hết các khía cạnh, bạn có thể xem một cột BLOB như một cột VARBINARY rằng có thể lớn như bạn muốn. Tương tự, bạn có thể xem cột TEXT dưới dạng cột VARCHAR. BLOB và TEXT khác với VARBINARY và VARCHAR theo các cách sau:

There is no trailing-space removal for BLOB and TEXT columns when values 

được lưu trữ hoặc lấy ra. Trước MySQL 5.0.3, điều này khác với VARBINARY và VARCHAR, trong đó các dấu cách sau là bị xóa khi các giá trị được lưu trữ.

On comparisons, TEXT is space extended to fit the compared object, 

chính xác như CHAR và VARCHAR.

For indexes on BLOB and TEXT columns, you must specify an index 

độ dài tiền tố. Đối với CHAR và VARCHAR, độ dài tiền tố là tùy chọn. Xem phần 7.5.1, “Chỉ mục cột”.

BLOB and TEXT columns cannot have DEFAULT values. 

http://dev.mysql.com/doc/refman/5.0/en/blob.html