
# 存储过程和相关表字符集不一致导致执行缓慢
#### 场景描述
TaurusDB存储过程执行很慢，处理少量数据耗时1min以上，而单独执行存储过程中的SQL语句却很快。
#### 原因分析
存储过程和相关表、库的字符集不一致，导致查询结果存在大量字符转换，从而执行缓慢。
排查过程：
使用如下命令查看存储过程和相关表的定义，观察存储过程和表的字符集是否一致。
```
SHOW CREATE PROCEDURE xxx; 
SHOW CREATE TABLE xxx
```
示例：
```
mysql> SHOW CREATE PROCEDURE testProc \G 
*************************** 1. row ***************************            
Procedure: showstuscore             
sql_mode: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION     
Create Procedure: xxx 
character_set_client: utf8mb4 
collation_connection: utf8mb4_general_ci   
Database Collation: utf8_general_ci 
1 row in set (0.01 sec)
```
可以看出，上述存储过程collation为utf8mb4_general_ci，而所在库collation默认为utf8_general_ci，collation值不一致，容易导致性能问题。
#### 解决方案
将存储过程和相关表、库的字符集改成一致后，执行缓慢问题解决。
