2012-05-10 35 views
9

Nếu tôi biết giá trị được lưu trữ trong MySQL luôn chính xác là 32 ký tự, có hiệu suất tốt hơn để đặt loại cột CHAR thay vì VARCHAR? Sự khác biệt về hiệu năng giữa việc sử dụng VARCHAR và CHAR là gì?MYSQL VARCHAR hoặc CHAR cho chuỗi có độ dài cố định

Cảm ơn.

+0

Related http://stackoverflow.com/a/34802591/934739 –

Trả lời

7

Tôi sẽ sử dụng CHAR.

Nếu bạn có khả năng tìm kiếm trên cột, CHAR trình bày nâng cấp hiệu suất nhỏ hơn VARCHAR.

Vì kích thước dữ liệu của bạn sẽ được sửa, không có nhược điểm khi sử dụng CHAR, vì số VARCHAR tương đương sẽ lưu trữ ở bất kỳ đâu từ một đến hai byte làm tiền tố.

tham khảo: MySQL CHAR vs VARCHAR

3

VARCHAR cột use a one or two byte prefix to store the length:

Ngược lại với CHAR, VARCHAR giá trị được lưu trữ như một byte hoặc hai byte chiều dài tiền tố cộng với dữ liệu. Tiền tố chiều dài cho biết số byte trong giá trị. Một cột sử dụng một byte độ dài nếu các giá trị không yêu cầu nhiều hơn 255 byte, hai byte độ dài nếu các giá trị có thể yêu cầu nhiều hơn 255 byte.

Vì vậy, cột VARCHAR sẽ lớn hơn một chút. Nếu bạn biết nó sẽ luôn chính xác 32 ký tự, thì CHAR có vẻ hợp lý. Trong hầu hết mọi trường hợp bạn không hoàn toàn chắc chắn về độ dài, tôi sẽ đi với VARCHAR.

7

Câu trả lời cho câu hỏi đầu tiên của bạn, "? Là nó hiệu suất tốt hơn để làm cho loại cột CHAR thay vì VARCHAR" ... là có. Chắc chắn rồi.

Nếu bạn LUÔN biết độ dài sẽ là 32, thì bạn chắc chắn nên sử dụng CHAR.

Một số câu trả lời tốt cũng đã được đưa ra ở đây: Why would I ever pick CHAR over VARCHAR in SQL?

0

Nếu chuỗi sẽ luôn là 32 ký tự (có thể bạn đang gặp một băm md5) sau đó đi cho Char (32) Bạn luôn có thể chạy kịch bản này chống lại bất kỳ bảng nào và xem những gì mysql phải nói

SELECT * FROM table PROCEDURE ANALYSE(); 

Điều này sẽ phân tích toàn bộ hàng của bạn và cung cấp cho bạn một số gợi ý. Chỉ hoạt động tốt nếu bạn có số lượng hoặc hàng phong nha trong bảng của mình.

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