mysql查询IN索引无效的问题【已解决】

博客指出在MySQL里,使用IN查询时相同类型数据可正常用索引,但IN嵌套子查询时索引消失,原因是select后用函数内部转换,MySQL不支持函数索引。解决办法是直接与子查询进行join关联,能提高效率,使用索引仅需0.006s。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用IN查询时,数据为相同类型的数据是可以正常使用索引的

 

但是,当IN里面嵌套子查询的是,emmm神一般的消失掉了?

询问大佬之后,说是当时用select之后使用了函数内部转换,mysql是不支持函数索引的。so,问题来了应该怎么办呢?

直接与子查询进行join关联,这种写法相当于IN子查询写法,而且效率有不少的提高

 EXPLAIN SELECT
	a.id,
	a.stu_id
FROM
	jx_students_scorex a,(
	SELECT
		id
	FROM
		jx_students_examination_typex
	WHERE
		`name` = '18-19期末考试'
	AND FIND_IN_SET(project, '0,1,2,3')
	AND stu_year = '2016'
	AND FIND_IN_SET(
		class_id,
		'0893e50c04aa4308a6696eedbb182b79,4bba27df05674480a8325de9733d0fa8'
	)
) t2
WHERE
	a.exam_id = t2.id

OK ,解决完毕使用索引0.006s

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值