以前插入emogi符号时候,一般是把库表设置为utf8mb4就行了。但是昨天上完线发现有同事使用了下面的sql:
alter table mactalk_act convert to character set utf8mb4 collate utf8mb4_bin;
更改后虽然可以插入emoji了,但是出现了超多的接口超时问题。最后网上查询说是修改了字符集后会导致索引失效,导致全表扫描的问题。用这个sql在测试环境看了下执行效率,果然是全表扫描了。但是如果改回来,则又不支持表情符号了。
然后看了下系统变量:
show variables like "%char%"
发现几个系统变量都还是utf8;
想了下应该是以前创建的,导致现在的字符集不同导致的。解决办法是全局去修改字符集,然后把原来的表的utf8的统一修改为utf8mb4;但是这个是一个比较大的事情;一步步修改来吧。
参考:https://zhuanlan.zhihu.com/p/398661275