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