mysql联表查询索引失效、索引不起作用、全表搜索问题

如下:

select a.id,a.code,a.name
from dat_student a
left join dat_class b on a.id = b.stuId
where a.delflag = 1 and a.status = 1;

假设:
a.id 为: int(11)
b.stuId 为:varchar(12)

此时索引失效,需要将两个字段修改为一致的数据类型,修改后:

select a.id,a.code,a.name
from dat_student a
left join dat_class b on CAST(a.id as CHAR) = b.stuId
where a.delflag = 1 and a.status = 1;

当 dat_student 表中的字符编辑为utf8mb4,而 dat_class 为utf8时,需要将class中的 stuId字段也设置为:

stuId varchar(12) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT ‘学生id’

,否则索引同样会失效。

猜你喜欢

转载自blog.csdn.net/weixin_39055025/article/details/106492386