Индексите могат да се използват само когато съпоставянето на израза съвпада с това в индексираната колона.
Ако 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