记录一次线上慢sql查询问题

       昨天晚上上线后,发现在app查询功能时候,整个系统直接爆出大量的慢sql报警。紧急回滚后查找问题,然后执行sql的执行计划:

     

 

   发现有一个全表扫描的问题,大量的查询导致了慢sql 。  

     之后再预生产重现,但是发现加上索引后仍然没有生效。为什么呢? 最后发现是关联表的字符集的排序规则不一致:旧表使用的是bin,新表使用的是ci

    

字符序是以对应的字符集名称开头、以_ci(不区分大小写)、_cs(区分大小写)、_bin(按编码值比较,区分大小写)等结尾。字符序的作用就是每种不同的字符集在比较时采用的不同的方法,例如:当会话的collation_connction设置为utf8_general_ci字符序时,字符a和字符A是等价的,而当其设置为utf8_bin时,字符a和字符A是不等价的。

 字符集的排序规则修改为一直正常

 

     

posted @ 2022-12-29 11:08  Doyourself!  阅读(35)  评论(0编辑  收藏  举报