最近遇到一个left join,表关联查询的SQL,很简单,如下:
select count(0) from tableA left join tableB on tableA.col01 = tableB.col01 where col02 = ?
tableA和tableB做左关联查询,但是速度巨慢,慢的想砸电脑~
tableA表数据大概5万,tableB数据大概7万,2个表的col01列都添加了索引
但是还是无比巨慢,然后百度了各种方式:
- 1、左表数据量保持最低;
- 2、加入索引;
- 3、where里面尽可能过滤数据
但是没任何用处,最后从别人那里才得知,原来是表数据字符编码导致的问题,具体原因如下:
字符集 | 排序规则 | |
tableA | utf8mb4 | utf8mb4_general_ci |
tableB | utf8 | utf8_general_ci |
2个表的字符编码不一样,导致left join查询速度非常的慢
所以,需要把2个表的字符编码,改成一致即可