求助JOIN + locate进行模糊查询 想解决主表走索引,从表不走索引的问题

请教:
系统环境:WIN10专业版64位,MYSQL8.0 64位,ODBC 64位
我目前的代码可以正常用,但是速度比较慢,用
主表1(t2) ‘NAME’字段中的数据
去模糊查询
从表2(20220430) 中的‘客户名称’字段,
主表1(t2) 数据1行,表2(20220430)数据80万行 ,查询时间约为5-6秒。如果只用LIKE 查询表2,速度大概为0.08S。
两个表、两个字段的类型都是char(150),编码都是utf8mb4,查询语句代码如下:

SELECT DISTINCT 20220430.* FROM 20220430 JOIN t2 ON LOCATE(t2.name,20220430.客户名称)>0;

目前,查询时可以走表1的索引 但是不走表2的索引,结果如下:

请教,如何设置才能够达到两个表都走索引查询,以提升查询速度?感谢

讨论数量: 3

有朋友能够帮忙解答吗

4周前 评论

为什么要用 locate,两个表的 name 和客户名称字段有什么不一样吗,是否有一定规则,可否添加冗余字段,把客户名称中的一部分摘出来作为联表 on 的条件

4周前 评论
zhaojjiang (作者) 4周前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!