暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MYSQL中IN,INSTR,FIND_IN_SET函数效率比较

原创 huayumicheng 2023-06-03
1179

转载:https://www.cnblogs.com/cctvyuzhou/p/8985603.html  

今天写代码时前台传过来类似‘1,2,3,4,5,6’的字符串,这种情况直接用IN是无效的,需要把字符串分割成数组或者组装成列表,然后再利用mabatis的foreach函数

<select id = "queryXXX",resultType = "XXX", paramterType = "java.lang.HashMap">
SELECT * FROM fast_input f where id in
<foreach item="item" index="index" collection="list" open="("
separator="," close=")">
#{item}
</foreach>
</select>

或者可以用INSTR,FIND_IN_SET等函数,正好借此测试了下这个三个函数的效率。

建表:

CREATE TABLE `fast_input` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`content` varchar(100) DEFAULT NULL COMMENT '内容',
PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

循环插入数据

INSERT INTO fast_input(content) SELECT content FROM fast_input

我用了65000条数据,分别执行以下语句



SELECT * FROM fast_input f where FIND_IN_SET(id,'4,14,144');
受影响的行: 0
时间: 0.022s

SELECT * FROM fast_input f where INSTR(CONCAT(',','4,14,144',','),CONCAT(',',id,','))>0;
受影响的行: 0
时间: 0.032s

SELECT * FROM fast_input f where id in('4','14','144');
受影响的行: 0

时间: 0.001s



可以看到,IN由于使用了主键的索引,效率最高,且甩另两个方法一个数量级,其次是FIND_IN_SET,最慢的是INSTR。但是有个问题大家注意下:

SELECT * FROM fast_input f where FIND_IN_SET('4',id);
受影响的行: 0
时间: 0.021s

SELECT * FROM fast_input f where FIND_IN_SET(id,'4');
受影响的行: 0

时间: 0.018s

同为FIND_IN_SET,参数位置不同,效率也有影响,有兴趣的可以自己研究下为什么。

PS:实际应用中,大家可以根据实际情况使用IN或者FIND_IN_SET函数,一个效率高,一个书写方便。

标签: Mysql , IN , FIND_IN_SET , 效率
好文要顶 关注我 收藏该文
七调
粉丝 - 0 关注 - 1
+加关注
00
« 上一篇: 本地不安装ORACLE,用PLSQL访问远程数据库
» 下一篇: kafka重置到最新offset偏移量
posted on 2018-05-03 15:32 七调 阅读(13415) 评论(0) 编辑 收藏 举报
刷新评论刷新页面返回顶部
登录后才能查看或发表评论,立即 登录 或者 逛逛 博客园首页
【推荐】中国云计算领导者:阿里云轻量应用服务器2核2G低至108元/年
【推荐】第五届金蝶云苍穹低代码开发大赛正式启动,百万奖金等你拿!

编辑推荐:
· ASP.NET Core 6 框架揭秘实例演示[36]:HTTPS 重定向
· Linux 上的 .NET 崩溃了怎么抓 Dump
· 由 C# yield return 引发的思考
· 我的内存去哪了?
· 如何让 Task 在非线程池线程中执行?
阅读排行:
· 技术研发一天的工作是怎样的?
· 如何在.net6webapi中配置Jwt实现鉴权验证
· .NET Core 程序实现 Windows 系统 Development、Staging、Prod
· pnpm才是前端工程化项目的未来
· 一次网络请求中的流量分发过程 | 京东云技术团队
Copyright © 2023 七调
Powered by .NET 7.0 on Kubernetes Powered by: 博客园

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论