位置: 编程技术 - 正文

Mysql中FIND_IN_SET()和IN区别简析

编辑:rootadmin

推荐整理分享Mysql中FIND_IN_SET()和IN区别简析,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

前段时间项目中使用到Mysql的FIND_IN_SET函数,感觉挺好用的。过一段时间,老大找到我说,这个需要改为IN,哈哈,只能改了,原因会在下面分析到!

弄个测试表来说说两者的区别,测试数据直接在问答区copy一份,能说明问题就行,哈哈,如果侵犯您的版权还请见谅,互联网吗,就需要分享!

拿上面的实验数据说话,test1得到的结果为空,为什么呢?因为,mysql中In是比较等不等,此处‘list'是表中的一个字段,也就是变量,除非它的值刚好和name的值一样,否则返回的结果都为空。拿test1来说,也即把‘daodao'改为‘daodao,xiaohu,xiaoqin'才会匹配到第一条记。

test2返回三条数据,可能是我们刚好需要的。mysql中FIND_IN_SET函数用来比较是不是包含,不管‘list'字段是变量或给定的字符串常量都能很好的工作。MySQL中原型为:FIND_IN_SET(str,strlist)。 假如字符串str 在由N 子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。

Mysql中FIND_IN_SET()和IN区别简析

一个字符串列表就是一个由一些被‘,'符号分开的子链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则 FIND_IN_SET() 函数被优化,使用比特计算。 如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号(‘,')时将无法正常运行。str也可以是变量,比如表中的一个字段。

当然,这不是我们项目中需要将FIND_IN_SET替换为IN的原因,因为在我们项目中两者都可以实现功能。只是IN比FIND_IN_SET性能高。我们要查询的字段是主键,使用IN时会使用索引,只会查询表中部分数据。FIND_IN_SET则会查询表中全部数据,由于数据量比较大,性能肯定不高,所以替换为IN。想看查询部分还是全部,可以使用EXPLAIN即解释功能查看,如果是部分则type为range(范围),全部则type为ALL(全部),还有个type是const,常量级的,呵呵。。。

最佳实践:

1、如果待查询的条件是常量那就使用IN,是变量则使用FIND_IN_SET,可以使用索引的,貌似,哈哈。

2、如果使用IN和FIND_IN_SET都能满足条件,则最好使用IN,理由同上,特别是查询字段为主键时或有索引时。

3、如果使用IN不能满足功能需求,那只能使用FIND_IN_SET了,哈哈,有时候说不定IN中条件加个%号也可以解决问题,加个%号IN就不只是比较是否相等了!

总结

标签: Mysql中FIND_IN_SET()和IN区别简析

本文链接地址:https://www.jiuchutong.com/biancheng/348375.html 转载请保留说明!

上一篇:sql和MySQL的语句执行顺序分析(mysql与sqlyog)

下一篇:mysql通过find_in_set()函数实现where in()顺序排序

  • 金融资产交易增值税
  • 财务毛利率是毛利率吗
  • 员工团体意外保险怎么报销
  • 对公收到一分钱怎么做账
  • 水利基金和印花税会计分录
  • 个税申报初始化密码
  • 填第二季度的利润总额怎么填
  • 工业企业制造费用具体怎么摊
  • 票据背书转让常见的错误
  • 独资企业要交税吗
  • 供货商对账单跨月返利怎么做账?
  • 公司开办期间的费用如何处理
  • 自来水公司代收污水处理费账务处理
  • 产品管理不足
  • 厂家核销费用直接抵扣
  • 购货方跨月进项税额转出分录
  • 金税系统年度维护费发票抵扣需要认证吗?
  • 交通补贴可以抵扣个税吗
  • 公司开发票就会报税吗?
  • 一般纳税人提供服务税率
  • 增值税税负率税率怎么算
  • 没有费用报销单发票可以直接报销吗
  • 成本费用包括哪些包括外购材料吗
  • 月初开票能抵扣上月的税吗
  • 企业支付宝税务局能查吗怎么查
  • 4s店付款
  • 行政事业性收费包括哪些项目
  • 电脑重启后分辨率没有1920x1080
  • linux help
  • 进出口商品的税率是多少
  • 委托代销委托方需要开发票吗
  • frontpage在哪里打开
  • 不能抵扣的发票可以做成本吗
  • 其他收益年末需要结转吗
  • 固定资产清理的累计折旧怎么算
  • 出口免抵增值税是什么意思
  • php 构造方法
  • python打印type
  • fsck命令详解
  • Vue 拖拽排序
  • 印花税对什么征税
  • 印刷行业成本核算程序
  • 会员退费怎么算
  • pos机刷卡未成功却扣了钱啥时候就退回来了
  • 在途物资属于会计科目吗
  • 企业收到拆迁补偿款
  • 注销时,其他应付款有余额,怎么冲减
  • 政府补助都有哪些类型
  • 赠品视同销售价格如何确定?
  • 参展企业收到展览费用
  • 保理手续费计入投资收益吗
  • 发票红冲怎么回事
  • 国有资产无偿划转税收政策
  • 主营业务成本包括哪些费用
  • 利税总额怎么算?
  • Vista系统提高ADSL上网速度的两种设置方法
  • 如何使用easybcd
  • win8打不开软件怎么解决
  • 安装网络设备
  • windows对高分屏怎么这么差
  • linux用root登录
  • cocos2dx键盘控制移动
  • eclipse 代码提示指令在哪改
  • 批处理强制删除文件
  • python怎么用
  • perl语句
  • 在Html中使用Requirejs进行模块化开发实例详解
  • Node.js中的包管理工具是什么
  • js中日期格式转换
  • node.js java 性能
  • android资源文件
  • nodejs常用内置模块
  • android布局教程
  • bootstrap怎么用
  • 企业年金需要个人财产申报
  • 重大税务违法案件一案双查标准
  • 第一次去税务局领发票
  • 百望税控盘电子发票开好了如何打印及导出发票
  • 于开年 山东省国家税务局
  • 印花税核算有两种情况,是如何处理的?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设