state 类型为 int 时候, 索引失效吗

select * where state = '1'

不失效,因为转换在查询条件上

state 类型为 String 时候, 索引失效吗

select * where state = 1

失效

等同于是 CAST(state AS signed int) = 1

代表在索引字段上做了函数操作,和like 一样破坏了索引值的有效性,优化器自然不会选择走索引功能。