sql >> Database teknologi >  >> RDS >> Mysql

utf-8 vs latin1

UTF8 Fordele:

  1. Understøtter de fleste sprog, inklusive RTL-sprog såsom hebraisk.

  2. Ingen oversættelse nødvendig ved import/eksport af data til UTF8-bevidste komponenter (JavaScript, Java osv.).

UTF8 Ulemper:

  1. Ikke-ASCII-tegn vil tage længere tid at kode og afkode på grund af deres mere komplekse indkodningsskema.

  2. Ikke-ASCII-tegn vil tage mere plads, da de kan lagres med mere end 1 byte (tegn ikke i de første 127 tegn i ASCII-tegnsættet). En CHAR(10) eller VARCHAR(10) felt kan have brug for op til 30 bytes for at gemme nogle UTF8-tegn.

  3. Andre sorter end utf8_bin vil være langsommere, da sorteringsrækkefølgen ikke direkte vil blive knyttet til tegnkodningsrækkefølgen), og vil kræve oversættelse i nogle lagrede procedurer (da variabler som standard er utf8_general_ci sortering).

  4. Hvis du har brug for at JOIN UTF8 og ikke-UTF8 felter, vil MySQL pålægge en SVERE præstationshit. Hvad der ville være sub-sekund-forespørgsler, kan potentielt tage minutter hvis de sammenføjede felter er forskellige tegnsæt/sammenstillinger.

Nederste linje:

Hvis du ikke har brug for at understøtte ikke-Latin1-sprog, ønsker at opnå maksimal ydeevne eller allerede har tabeller med latin1 , vælg latin1 .

Ellers skal du vælge UTF8 .



  1. Sådan optimerer du MySQL/MariaDB-tabeller

  2. Hvorfor skal jeg double-escape (brug 4 \) for at finde en omvendt skråstreg (\ ) i ren SQL?

  3. SQL Server på Linux

  4. Hvordan bruger man GROUP BY til at sammenkæde strenge i SQL Server?