Zalety UTF8:
-
Obsługuje większość języków, w tym języki RTL, takie jak hebrajski.
-
Brak konieczności tłumaczenia podczas importowania/eksportowania danych do komponentów obsługujących UTF8 (JavaScript, Java itp.).
Wady UTF8:
-
Kodowanie i dekodowanie znaków innych niż ASCII zajmie więcej czasu ze względu na ich bardziej złożony schemat kodowania.
-
Znaki inne niż ASCII zajmą więcej miejsca, ponieważ mogą być przechowywane przy użyciu więcej niż 1 bajtu (znaki nie znajdujące się w pierwszych 127 znakach zestawu znaków ASCII).
CHAR(10)
lubVARCHAR(10)
pole może potrzebować do 30 bajtów do przechowywania niektórych znaków UTF8. -
Zestawienia inne niż
utf8_bin
będzie wolniejsze, ponieważ porządek sortowania nie będzie bezpośrednio mapowany na porządek kodowania znaków) i będzie wymagał translacji w niektórych procedurach składowanych (jako że zmienne domyślnie toutf8_general_ci
zestawienie). -
Jeśli potrzebujesz
JOIN
Pola UTF8 i inne niż UTF8, MySQL nałoży POWAŻNE hit wydajności. Zapytania podsekundowe mogą potencjalnie zająć minuty jeśli połączone pola są różnymi zestawami znaków/porównaniami.
Konkluzja:
Jeśli nie potrzebujesz obsługiwać języków innych niż Latin1, chcesz osiągnąć maksymalną wydajność lub masz już tabele używające latin1
, wybierz latin1
.
W przeciwnym razie wybierz UTF8
.