Indeksy mogą być używane tylko wtedy, gdy sortowanie wyrażenia jest zgodne z indeksowaną kolumną.
Jeśli COERCIBILITY wyrażenia jest niższy niż w kolumnie (czyli 2 ), sortowanie kolumny jest rzutowane na zestawienie wyrażenia, a indeks nie jest używany.
Normalnie literały mają COERCIBILITY z 4 i zmienne użytkownika z 3 , więc nie powinno to stanowić problemu.
Jeśli jednak zmieszasz różne sortowania w JOIN lub UNION , kolejność obsady nie jest gwarantowana.
W takim przypadku powinieneś podać jawne sortowanie do kolumny, którą przesyłasz (najprawdopodobniej chcesz rzutować latin1 do UTF8 ) i powinno to być zestawienie kolumny, do której przesyłasz:
SELECT *
FROM utf_table
JOIN latin_table
ON utf_column = latin_column COLLATE UTF8_GENERAL_CI