UTF8-fördelar:
-
Stöder de flesta språk, inklusive RTL-språk som hebreiska.
-
Ingen översättning behövs vid import/export av data till UTF8-medvetna komponenter (JavaScript, Java, etc).
UTF8 Nackdelar:
-
Icke-ASCII-tecken kommer att ta längre tid att koda och avkoda, på grund av deras mer komplexa kodningsschema.
-
Icke-ASCII-tecken kommer att ta mer utrymme eftersom de kan lagras med mer än 1 byte (tecken som inte ingår i de första 127 tecknen i ASCII-teckenuppsättningen). En
CHAR(10)
ellerVARCHAR(10)
fältet kan behöva upp till 30 byte för att lagra vissa UTF8-tecken. -
Andra sorteringar än
utf8_bin
kommer att vara långsammare eftersom sorteringsordningen inte direkt mappas till teckenkodningsordningen), och kommer att kräva översättning i vissa lagrade procedurer (som standardvariabler ärutf8_general_ci
sortering). -
Om du behöver
JOIN
UTF8 och icke-UTF8-fält kommer MySQL att införa en SVERE prestationsträff. Vad som skulle vara undersekundsfrågor kan eventuellt ta minuter om de sammanfogade fälten är olika teckenuppsättningar/kollationer.
Sammanfattning:
Om du inte behöver stödja icke-Latin1-språk, vill uppnå maximal prestanda eller redan har tabeller som använder latin1
, välj latin1
.
Annars väljer du UTF8
.