インデックスは、式の照合がインデックス付きの列の照合と一致する場合にのみ使用できます。
式の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