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

UTF-8 vs Latin1 mysql, indekser bruges ikke på utf-8

Indekser kan kun bruges, når udtrykkets sortering matcher den i den indekserede kolonne.

Hvis udtrykket er COERCIBILITY er lavere end kolonnens (dvs. 2). ), castes kolonnens sortering til udtrykket, og indekset bruges ikke.

Normalt har bogstaver COERCIBILITY af 4 og brugervariable for 3 , så dette burde ikke være et problem.

Men hvis du blander forskellige sammenstillinger i en JOIN eller UNION , cast-rækkefølgen er ikke garanteret.

I dette tilfælde skal du angive eksplicit sortering til den kolonne, du caster (sandsynligvis vil du caste latin1 til UTF8 ), og dette skal være sammenstillingen af ​​den kolonne, du caster til:

SELECT  *
FROM    utf_table
JOIN    latin_table
ON      utf_column = latin_column COLLATE UTF8_GENERAL_CI


  1. Ydeevne af LIKE-forespørgsler på tabeller med flere millioner rækker, MySQL

  2. Sådan returneres alle deaktiverede udenlandske nøglebegrænsninger i SQL Server (T-SQL-eksempel)

  3. PHP-strengforskelle og dynamiske begrænsninger

  4. genstart mysql server på windows 7