MySQL提供了两种主要的方式来实现这一功能:FIND_IN_SET和LIKE。 FIND_IN_SET函数用于在逗号分隔的字符串列表中查找特定字符串。 LIKE运算符用于模糊匹配字符串。 但是,由于数据库表可能包含大量数据,使用这两种方法进行查询可能会导致性能问题。因此,我们需要优化查询效率,提高系统的响应速度。 2. 优化步骤 下面是优化...
“罗永浩”,“罗纳尔多”,“罗” //但找不出“c罗纳尔多”这个 where name like ‘罗’ //可以找出:”罗成”, “罗兰”, //但找不出“c罗”,“罗永浩” 极端情况: where name like “罗” //其实它只是相当于: name = ‘罗’ 如果不使用“%”或“_”,则 like 相当于等于(=)。
后面把数据添加到150W条数据测试结果如下 -- Like 7.256s 6.072s 8.108s 6.013s 6.060s -- select * from jsj_af.af_archive where concat(',',EditUserIDArr,',') like CONCAT('%,','6',',%') and CreateUserID=10 order by CreateTime desc limit 11,20; -- FIND_IN_SET 5.624s 5.574s 5...
根据本人测试 结果可能数据量不太够 LIKE position(),instr(),find_in_set(), locate()的查询速度是要比LIKE稍微快点。
⼤家都知道mysql 模糊查询的常⽤⽅法是LIKE 但这个语句查询效率很慢,那么有没有⽐较好的⽅法呢,下⾯本⼈测试了⼏个语句 测试数据800条左右 1,测试结果⽤时0.06s 2 locate()⽤时0.02s 3 find_in_set() ⽤时0.02s 4 instr instr() ⽤时0.03 根据本⼈测试结果可能数据量不太够 ...
OK,我加了一百多万的随机数据,简单对比一下以上几种查询方式的效率 使用LIKE查询包含22、273、2399、7390的结果,主要看下耗时 1.29秒 使用正则查询包含22、273、2399、7390的结果 使用FIND_IN_SET查询包含22、273、2399、7390的结果 以上截图都是用的InnoDB引擎,game字段加了索引 ...
FIND_IN_SET(str,strlist)函数 它不同于 like 模糊查询,它是以“,”来分隔值 str 要查询的字符串 strlist 字段名 参数以”,”分隔 如 (1,2,6,8) 查询字段(strlist)中包含(str)的结果,返回结果为null或记录 FIND_IN_SET和like的区别 like是广泛的...mysql...
使用LIKE:虽然性能可能不如FIND_IN_SET(尤其是在处理大量数据时),但你可以使用LIKE操作符结合通配符来实现类似的功能。例如,roles LIKE '%,#{role},%'可以查找包含特定角色的记录,但请注意这种方法可能不会正确处理角色位于字符串开头或结尾的情况。 规范化数据模型:如果可能的话,考虑将逗号分隔的字符串拆分成单独...
此外,`find_in_set()`函数在处理权限查询、职务查询等场景中,能更精确地满足需求,避免了使用`LIKE`时可能带来的查询结果不准确的问题。总结,`find_in_set()`函数在MySQL中提供了高效且精确的字符串查找能力,适用于各种场景,如权限管理、职位查询等,能够满足开发者在数据库操作中的多种需求。在...
场景1: 遇到了场景是搜出了一个字段是很长的以逗号分隔的值, 然后需要用这个字段去like某些字段。或者就是复制出来手动给它拼成 所以改用了FIND_IN_SET这个函数了。...