mysql IN FIND_IN_SET对比

本文通过具体的SQL查询案例对比了IN操作符与FIND_IN_SET函数在查询效率上的区别。实验结果显示,在进行ID匹配查询时,IN操作符利用索引实现了高效的范围扫描,而FIND_IN_SET则导致了全表扫描,效率较低。
FILE_IN_SET IN 使用方法对比

user表数据

idname
1小明
2小红
3小李子

现在查询id为 1,3的数据

select * from `user` where id in(1,3)
select * from `user` where FIND_IN_SET(id, '1,3')

使用explain命令查询运行情况

  • IN命令结果
explain
select * from `user` where id in(1,3)
idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
idSIMPLEuserrangePRIMARYPRIMARY4 2Using where

type = range 索引范围扫描

  • FIND_IN_SET 结果
explain
select * from `user` where FIND_IN_SET(id, '1,3')
idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
idSIMPLEuserALL 3Using where

type=ALL 全盘扫描 效率低下不推荐使用

结论

IN 效率高与 FIND_IN_SET

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值