美文网首页技术分享
MySQL利用help_topic表把以特殊字符分隔的字符串转换

MySQL利用help_topic表把以特殊字符分隔的字符串转换

作者: 养一只tom猫 | 来源:发表于2021-04-23 10:41 被阅读0次

最近发现项目中首页某个查询很慢,点进代码一看原来是当时用到了很多FIND_IN_SET函数查询(因为表中字段是使用逗号分隔的字符串),FIND_IN_SET函数是不走索引的,那么对于FIND_IN_SET函数我们该如何优化呢?查阅了很多博客发现下面这种方法:MySQL为我们提供了一个help_topic表,该表中索引是从0自增的一共600多行,可使用该表把使用特定字符分隔的字符串替换成一列一列的数据,可将FIND_IN_SET函数替换成IN查询

SELECT
    #截取字符串 比如当前字符串为 '1,2,3,4' 会将字符串截取为 
    #0 1
    #1 2
    #2 3
    #3 4
    #help_topic表中剩余的列全将为字符串最后一位
        help_topic_id,
    substring_index( substring_index( '1,2,3,4', ',', help_topic_id + 1 ), ',',- 1 ) 
FROM
    mysql.help_topic 
WHERE
    #控制行数 (字符串整个长度 - 去掉分隔符的长度)+ 1 = 当前字符串中所有被截取有效数据
    help_topic_id < ( length( '1,2,3,4' ) - length( REPLACE ( '1,2,3,4', ',', '' ))+ 1 );

相关文章

  • MySQL利用help_topic表把以特殊字符分隔的字符串转换

    最近发现项目中首页某个查询很慢,点进代码一看原来是当时用到了很多FIND_IN_SET函数查询(因为表中字段是使用...

  • List列表转换为字符串,以逗号分隔

    List列表转换为字符串,以逗号分隔 List转换为String

  • 数组方法

    检测数组 转换方法 toString 把数组转换成字符串,并用逗号分隔开来 join 把数组转换成字符串,并用指定...

  • string字符串分割问题

    今天在使用字符串分隔时使用了$分隔符,发现怎么分隔都只有一个字符,原来$是特殊字符串,不能作为分隔符,可以把$使用...

  • 字符串转数组

    含有分隔符 将string字符串转换为array数组 将array数组转换为string字符串 不含有分隔符 关于...

  • 如何相互转换逗号分隔的字符串和List

    将逗号分隔的字符串转换为List 方法 1: 利用JDK的Arrays类 String str = "a,b,c"...

  • 数组

    检测是否是数组: 数组转字符串:join("分隔符")字符串转换数组:split("分隔符") js对象转换成js...

  • 17.电话中的数字字母转换

    给定包含2-9的数字字符串,利用电话来转换成可能对应的字符串。 思路1:建立2-9的转换表。利用查询的操作分别转换...

  • 逗号分割字符串和list相互转换

    将逗号分隔的字符串转换为List 方法 1: 利用JDK的Arrays类 Stringstr="a,b,c"; L...

  • 2017.10.17C#

    今天上午老师讲了字符串比较,定位字符串和子串,定位,截取子串,字符串转换字符数组,分隔字符串,类型转换! 下午继续...

网友评论

    本文标题:MySQL利用help_topic表把以特殊字符分隔的字符串转换

    本文链接:https://www.haomeiwen.com/subject/dchcrltx.html