2011-09-29 33 views
5

CHAR được lưu trữ dưới dạng chuỗi có độ dài cố định, VARCHAR được lưu trữ dưới dạng chuỗi có độ dài thay đổi. Tôi có thể sử dụng VARCHAR để lưu trữ một chuỗi dài cố định, nhưng tại sao mọi người vẫn muốn sử dụng CHAR để lưu trữ một chuỗi dài cố định? Có lợi ích gì khi sử dụng CHAR trên VARCHAR? Nếu không có lợi ích nào, tại sao cơ sở dữ liệu mySQL không loại bỏ tùy chọn CHAR?Bất kỳ lợi ích nào của việc sử dụng CHAR trên VARCHAR?

+0

http://stackoverflow.com/questions/59667/why-would-i-ever-pick-char-over-varchar-in-sql –

+0

http://stackoverflow.com/questions/350195/char-vs cơ sở dữ liệu varchar-for-performance-in-stock- –

+0

, xin lỗi cho câu hỏi trùng lặp. Có câu trả lời. Cảm ơn các liên kết. – zac1987

Trả lời

5
  • VARCHAR

cửa hàng varchar chiều dài thay đổi chuỗi ký tự. nó có thể yêu cầu ít dung lượng hơn các loại có độ dài cố định vì nó chỉ sử dụng nhiều không gian khi cần.

varchar cũng sử dụng 1 hoặc 2 byte phụ để ghi lại độ dài của giá trị. ví dụ varchar (10) sẽ sử dụng tới 11 byte dung lượng lưu trữ. varchar giúp hiệu suất vì nó tiết kiệm không gian. tuy nhiên vì các hàng có độ dài thay đổi, chúng có thể phát triển khi bạn cập nhật chúng, điều này có thể gây ra thêm công việc. nếu liên tiếp phát triển và không còn phù hợp ở vị trí ban đầu của nó, hành vi này là động cơ phụ thuộc vào lưu trữ ...

  • CHAR

char được cố định chiều dài, mysql luôn phân bổ đủ không gian cho các quy định số ký tự. Khi lưu trữ một giá trị CHAR, MySQL sẽ loại bỏ bất kỳ khoảng trắng cuối nào. Giá trị được đệm với không gian cần thiết để so sánh.

char rất hữu ích nếu bạn muốn lưu trữ các chuỗi rất ngắn hoặc nếu tất cả các giá trị gần như là cùng độ dài. Ví dụ: CHAR là một lựa chọn tốt cho các giá trị MD5 cho mật khẩu người dùng, luôn có cùng độ dài.

char cũng tốt hơn VARCHAR cho dữ liệu được thay đổi thường xuyên, bởi vì hàng có độ dài cố định không dễ bị phân mảnh.

+0

Bây giờ tôi thấy lợi ích của CHAR về giá trị cập nhật thường xuyên. Cảm ơn nhiều. – zac1987

+0

Sidenote: Tôi sẽ không nói rằng char là một lựa chọn tốt cho băm MD5, hoặc băm thực sự. Chúng phải được lưu trữ ở định dạng nhị phân thay vì mã hóa khác như hệ thập lục phân. – Luc

+0

tôi tin rằng nó nhanh hơn để tra cứu, vì cơ sở dữ liệu biết chính xác nơi cần đi ngay lập tức thay vì phải thực hiện các phép tính chiều dài, điều này có thể không quá đáng chú ý trong những ngày này –

Các vấn đề liên quan