mysql数据量极少的两个表关联查询速度非常慢,字段排序规则编码的天坑!

在做项目的过程中,交接了一个供应商的项目,基于activiti做的工作流平台,有一个查询待办的接口,两张表关联,act_ru_task和cscp_proc_base。

act_ru_task表数量9320,cscp_proc_base表数量4690。

act_ru_task left jon cscp_proc_base 通过一个字段关联。

查询执行时间在40多s,我当场震惊!这点数据量也不需要索引啊。

但是抱着试一试的想法,我给这个关联字段加了索引,再执行以下,没有任何效果。

试着过滤以下cscp_proc_base的数据,速度飞速上升,1S之内。

发现只要cscp_proc_base表有字段作为查询条件,查询速度就会飞起。

怎么回事呢?查看了以下执行计划,发现索引并没有用到,是执行的全表查询,但是几千条数据,全表查询也不应该这样啊。

于是百度百度百度,最后找到答案。

act_ru_task表字段的排序规则是utf8_bin,cscp_proc_base表字段的排序规则是utf8_general_ci。

因为这玩意导致的!!!

他们单表自己随便怎么搞都没问题,一关联就死翘翘

你可能感兴趣的:(mysql,mysql,数据库)