Los índices solo se pueden usar cuando la intercalación de la expresión coincide con la de la columna indexada.
Si la expresión COERCIBILITY
es menor que el de la columna (es decir, 2
), la intercalación de la columna se convierte en la de la expresión y no se utiliza el índice.
Normalmente, los literales tienen COERCIBILITY
de 4
y variables de usuario la de 3
, por lo que esto no debería ser un problema.
Sin embargo, si mezcla diferentes intercalaciones en un JOIN
o UNION
, el orden de lanzamiento no está garantizado.
En este caso, debe proporcionar una intercalación explícita a la columna que está emitiendo (lo más probable es que desee emitir latin1
a UTF8
), y esta debería ser la colación de la columna a la que está enviando:
SELECT *
FROM utf_table
JOIN latin_table
ON utf_column = latin_column COLLATE UTF8_GENERAL_CI