错误记录: MYSQL存储过程执行时间长,但单独执行sql没有问题

问题

        测试的时候发现,800w数据的前提下,执行存储过程特别的慢,查看索引都没有问题,单独把sql语句一条条的执行也没有问题,然后就各种找,最终解决了!

        看下图,存储过程放3条sql, 就敢输出6s!

 

 

字符集不匹配问题

         是的没错,这就是我的问题; 算是又get到一个新知识点

 要求

 1. 数据库字符集

2. 表字符集

3. 表字段字符集

4. 存储过程字符集

以上4个,全部一致!否则某一步骤就慢了

字符集分析 

字符集        查询        修改
数据库show create database database_namealter table database_name character set utf8(需要的字符集名称,以utf8为例) 
表及表字段show create table table_name alter table table_name default character set utf8(需要的字符集名称,以utf8为例)                      
存储过程show create procedure procedure_name导入存储过程,导入时若不指定字符集,默认和数据库一致(其他语句方法我不会)

错误修改

对着”字符集分析“看,将其全部改成一致,问题就迎刃而解了! 

 案例分析

问题截图

 

注意这一步骤,如果执行【show profiles】没有任何输出,需要设置变量【set profiling = 1】 这个设置方法是临时的,退出数据库的时候,就自动被修改为默认值0了;

mysql> show profiles;
Empty set, 1 warning (0.00 sec)

mysql> set profiling = 1;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> show profiles;

查看数据库字符集

 

查看表及字段字符集 

 

 数据库、表及字段字符集都统一后,重新导入存储过程后执行

 

 

完结 撒花~ 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值