昨天晚上上线后,发现在app查询功能时候,整个系统直接爆出大量的慢sql报警。紧急回滚后查找问题,然后执行sql的执行计划:
发现有一个全表扫描的问题,大量的查询导致了慢sql 。
之后再预生产重现,但是发现加上索引后仍然没有生效。为什么呢? 最后发现是关联表的字符集的排序规则不一致:旧表使用的是bin,新表使用的是ci
字符序是以对应的字符集名称开头、以_ci(不区分大小写)、_cs(区分大小写)、_bin(按编码值比较,区分大小写)等结尾。字符序的作用就是每种不同的字符集在比较时采用的不同的方法,例如:当会话的collation_connction设置为utf8_general_ci字符序时,字符a和字符A是等价的,而当其设置为utf8_bin时,字符a和字符A是不等价的。
字符集的排序规则修改为一直正常
标签:bin,字符,ci,字符集,查询,大小写,线上,sql From: https://www.cnblogs.com/thinkingandworkinghard/p/17011985.html