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_binkommer 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_cisortering). -
Om du behöver
JOINUTF8 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 .