转换为 CHAR 导致 VARCHAR 列上的索引不起作用

CONVERT to CHAR cause index on VARCHAR column doesn't work

SELECT * FROM table1 WHERE a = '1';
SELECT * FROM table1 WHERE a = CONVERT(1, CHAR);

a列是VARCHAR类型,我已经在上面建立了索引。第一个使用索引,但第二个不使用。有什么线索吗?

我怀疑可能MySQL把CHAR和VARCHAR当成两种不同的类型,所以我把a列改成了CHAR,索引也不行。

听起来像是 CHARACTER SETCOLLATION 的问题。请提供:

SHOW VARIABLES LIKE 'char%';
how you are connecting to the database
SHOW CREATE TABLE table1;

可能答案涉及更改 CONVERT:

CONVERT(1, CHAR  charset utf8)

什么是真正的查询;可能有一些其他方法更适合您的情况。使用 CONVERT 是一个错误;让我们来看看它的需要。

要查看转化,请执行

EXPLAIN FORMAT=JSON SELECT ...