博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql大小写规则校验
阅读量:6860 次
发布时间:2019-06-26

本文共 837 字,大约阅读时间需要 2 分钟。

hot3.png

EXPLAIN SELECT a.* FROM gc_fin_rate_info  a LEFT JOIN rbac_user b ON a.owner =b.id;

处理之前的情况。

虽然走了索引,但是type不为ref。分析表的字符集及校验规则

 

两张表的字符集、引擎、核对规则都是一样的,就是不走索引

翻阅资料发现,mysql的字段也有校对规则,两个字符串比较,要求必须有相同的校对规则,或者是相容的,及左连的表的校对规则的级别高于主表,mysql的校对规则默认有utf8_bin(最高,以二进制的形式对编码进行比较),utf8_general_cs(区分大小写),utf8_general_ci(不区分大小写),如果left join左右两边的级别一样或者右边的级别高于左边的会走索引。

用show create table gc_fin_rate_info  ,rbac_user 查看关联的字段的属性,

CREATE TABLE `gc_fin_rate_info` (`owner` CHAR(20) COLLATE utf8_bin NOT NULL) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_binCREATE TABLE `rbac_user` (`id` CHAR(20) CHARACTER SET utf8 NOT NULL) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin

发现rbac_user的id没有校对规则,即级别小于主表的字段。所以不走索引

修改级别即可

ALTER TABLE rbac_user MODIFY id CHAR(20)  CHARACTER SET utf8  COLLATE utf8_bin NOT NULL;

 

转载于:https://my.oschina.net/u/2391658/blog/917086

你可能感兴趣的文章
如何构建一个高效的数据科学部门
查看>>
XSS现代WAF规则探测及绕过技术
查看>>
HPE升级Integrity服务器采用最新安腾引擎
查看>>
何以从IT时代到DT时代?
查看>>
ARM CEO:物联网市场爆发的1000亿枚芯片将采ARM设计
查看>>
呼叫发生器软件
查看>>
Oracle数据库体系结构解析
查看>>
高性能云存储将不再是一个梦
查看>>
Oracle RAC Database 11.1.0.6监听故障案例
查看>>
强密码策略的最佳实践
查看>>
企业移动应用开发常见问题
查看>>
如何充分利用云计算? 掌握这十大方法或许可以
查看>>
Gartner报告:大数据将在中国大行其道
查看>>
管理阶层是如何看待测试?
查看>>
Selenium—实现网页元素拖拽
查看>>
《Clojure数据分析秘笈》——3.5节将agent和STM结合使用
查看>>
微软纳德拉:科技有黑暗一面 开发者要慎用权力
查看>>
中国光伏市场风起云涌 单晶硅巨头开始了扩张计划
查看>>
《DBA修炼之道:数据库管理员的第一本书》——1.15节回顾
查看>>
Visual Studio之UI界面测试
查看>>