MYSQL字符集不同引起的join无法走索引的问题怎么解决


本篇内容主要讲解“MYSQL字符集不同引起的join无法走索引的问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MYSQL字符集不同引起的join无法走索引的问题怎么解决”吧!在对sql进行转换时,可以发现了以下将s表的deptid 转换成utf8mb4 的情况,即是说,两个表在left join时存在关联开发云主机域名字段deptid 字符集不同的情况。on((`SSS`.`d`.`Deptid` = convert(`ppp`.`s`.`Deptid` using utf8mb4))))细查发现d表的deptid字段是utf8mb4,但是s表的deptid字段是utf8。而根据经验,两边关联时字段字符集不一确实会导致无法走索引,因为这里是发生了隐式转换了。此时s表上的索引便无法生效。此时我有个疑问是当以上将条件d.DEPTID = ‘00001111’ 换成s.DEPTID = ‘00001111’,其可以选择了索引,当此时字符集不同的情况仍然存在,发现以上选择d表的主键的原因是clustered_pk_chosen_by_heuristics。因为是主键而选择?这个便不是很理解了 “considered_access_paths”: [ { “access_type”: “eq_ref”, “index”: “PRIMARY”, “rows”: 1, “cost”: 1.2, “chosen”: true, “cause”: “clustered_pk_chosen_by_heuristics” },在修改字符集统一为utf8mb4后就正常了:到此,相信大家对“MYSQL字符集不同引起的join无法走索引的问题怎么解决”有了更深的了解,不妨来实际操作一番吧!这里是开发云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: mysql函数replace字符串替换

最近在一次做项目的时候,发现之前存在数据库中的数据名称写错了,由于数据量比较大,所以从网上找到开发云主机域名了replace的方法将bk_keben表中的name字段中的’选修’改为’必修’UPDATE bk_keben SET name = REPLACE …

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/20 18:07
下一篇 06/20 18:07

相关推荐