Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

UTF-8 vs Latin1 mysql, índices não usados ​​em utf-8


Os índices podem ser usados ​​somente quando o agrupamento da expressão corresponde ao da coluna indexada.

Se a COERCIBILITY da expressão é inferior ao da coluna (isto é 2 ), o agrupamento da coluna é convertido para o da expressão e o índice não é usado.

Normalmente, os literais têm COERCIBILITY de 4 e variáveis ​​de usuário de 3 , então isso não deve ser um problema.

No entanto, se você misturar diferentes agrupamentos em um JOIN ou UNION , a ordem de conversão não é garantida.

Neste caso, você deve fornecer um agrupamento explícito para a coluna que você está transmitindo (provavelmente, você deseja converter latin1 para UTF8 ), e este deve ser o agrupamento da coluna para a qual você está transmitindo:
SELECT  *
FROM    utf_table
JOIN    latin_table
ON      utf_column = latin_column COLLATE UTF8_GENERAL_CI