给订单表的order_no字段(varchar类型)建了索引,查询时写WHERE order_no = 123456(数字类型),结果EXPLAIN显示走了全表扫描。我很迷惑,明明有索引。后来才知道MySQL在做比较时会隐式类型转换——把字符串转成数字,相当于在索引列上用了CAST(order_no AS signed),导致索引失效。解决办法很简单:传参时保持类型一致,小细节很重要