Индексы можно использовать только тогда, когда сопоставление выражения совпадает с сопоставлением в индексированном столбце.
Если выражение COERCIBILITY
меньше значения столбца (то есть 2
), то сопоставление столбца преобразуется в выражение и индекс не используется.
Обычно литералы имеют COERCIBILITY
из 4
и пользовательские переменные имеют значение 3
, поэтому это не должно быть проблемой.
Однако, если вы смешаете различные параметры сортировки в JOIN
или UNION
, порядок приведения не гарантируется.
В этом случае вы должны предоставить явное сопоставление для столбца, который вы разыгрываете (наиболее вероятно, вы хотите разыграть latin1
в UTF8
), и это должно быть сопоставление столбца, для которого вы разыгрываете: *
SELECT *
FROM utf_table
JOIN latin_table
ON utf_column = latin_column COLLATE UTF8_GENERAL_CI