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