sql >> Databasteknik >  >> RDS >> Mysql

utf-8 vs latin1

UTF8-fördelar:

  1. Stöder de flesta språk, inklusive RTL-språk som hebreiska.

  2. Ingen översättning behövs vid import/export av data till UTF8-medvetna komponenter (JavaScript, Java, etc).

UTF8 Nackdelar:

  1. Icke-ASCII-tecken kommer att ta längre tid att koda och avkoda, på grund av deras mer komplexa kodningsschema.

  2. 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) eller VARCHAR(10) fältet kan behöva upp till 30 byte för att lagra vissa UTF8-tecken.

  3. 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 är utf8_general_ci sortering).

  4. 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 .



  1. mysql långsam fråga

  2. Socketfil /var/pgsql_socket/.s.PGSQL.5432 saknas i Mountain Lion (OS X Server)

  3. Infogar data från frontend till mysql db i angularjs

  4. Hur man använder vyer i en MySQL-databas