Ưu điểm của UTF8:
-
Hỗ trợ hầu hết các ngôn ngữ, bao gồm cả các ngôn ngữ RTL như tiếng Do Thái.
-
Không cần bản dịch khi nhập / xuất dữ liệu sang các thành phần nhận biết UTF8 (JavaScript, Java, v.v.).
UTF8 Nhược điểm:
-
Các ký tự không phải ASCII sẽ mất nhiều thời gian hơn để mã hóa và giải mã, do sơ đồ mã hóa phức tạp hơn của chúng.
-
Các ký tự không phải ASCII sẽ chiếm nhiều dung lượng hơn vì chúng có thể được lưu trữ bằng cách sử dụng nhiều hơn 1 byte (các ký tự không nằm trong 127 ký tự đầu tiên của bộ ký tự ASCII).
CHAR(10)
hoặcVARCHAR(10)
trường có thể cần tới 30 byte để lưu trữ một số ký tự UTF8. -
Các ảnh ghép khác với
utf8_bin
sẽ chậm hơn vì thứ tự sắp xếp sẽ không ánh xạ trực tiếp đến thứ tự mã hóa ký tự) và sẽ yêu cầu dịch trong một số thủ tục được lưu trữ (vì các biến được mặc định thànhutf8_general_ci
đối chiếu). -
Nếu bạn cần
JOIN
Các trường UTF8 và không phải UTF8, MySQL sẽ áp đặt một SEVERE hiệu suất hit. Các truy vấn dưới giây sẽ là gì có thể mất phút nếu các trường được kết hợp là các bộ ký tự / đối chiếu khác nhau.
Điểm mấu chốt:
Nếu bạn không cần hỗ trợ các ngôn ngữ không phải Latin1, muốn đạt được hiệu suất tối đa hoặc đã có các bảng sử dụng latin1
, chọn latin1
.
Nếu không, hãy chọn UTF8
.