【MySQL】find_in_set 函数

xixuefeng MySQL, MySQL-DEV 2018-03-03 23:49:46 277 次浏览 【MySQL】find_in_set 函数已关闭评论

在数据库设计中,经常会遇到这种情况,某一个字段的值是用逗号分隔的。常见的比如用户权限,在赋权时把权限、角色用逗号隔开。

首先是绝对不赞成这么搞的,起码连第一范式都没有满足,且后续在针对这个字段进行统计时性能会相当的差。并且在检索时还有可能有问题。

MySQL 5.7 做个测试

1:准备表及数据

2:检索t表中list字段包含2的记录

2.1:用like实现

2.2:用find_in_set实现

3:小结

1)显然,find_in_set无论是用法还是结果都是非常贴心的;

2)find_in_set函数的使用,前提是,字符串必须是以’,’号分隔,它是通过’,’还做为分隔的位置,同时也是按照位置进行匹配;

3)在性能上,应该是差不多的,作者本人也没仔细测试过性能。但是,在准确度上,find_in_set一定是最优的;

4)最关键的,不想被骂,就别这么设计。

 

回顶部