MySQL-关联字段类型不一致导致隐式转换

关键字

JOIN 关联字段类型不一致、隐式转换

问题描述

SQL:

SELECT
   a.id,
   a.`name`,
   a.update_time,
   a.expire_duration,
   a.isdefault,
   a.isfree,
   a.type,
   a.env,
   a.ecs,
   b.id AS monitor_id,
   a.user_id,
   a.user_name,
   a.provider_id,
   a.manager,
   a.contact,
   a.dept
 FROM
   resource_pool a
   LEFT JOIN monitor_resourcepool b
     ON a.id = b.resourcepool_id
     AND b.dr = 0
 ORDER BY isfree DESC,
   isdefault DESC,
   a.update_time DESC;

执行较慢

解决问题思路

我们查看执行计划

+----+-------------+-------+------+-------------------+------+---------+------+------+------------------------------------------------+
| id | select_type | table | type | possible_keys     | key  | key_len | ref  | rows | Extra                                          |
+----+-------------+-------+------+-------------------+------+---------+------+------+------------------------------------------------+
|  1 | SIMPLE      | a     | ALL  | NULL              | NULL | NULL    | NULL |  260 | Using filesort                                 |
|  1 | SIMPLE      | b     | ALL  | i_resourcepool_id | NULL | NULL    | NULL |  361 | Range checked for each record (index map: 0x2) |
+----+-------------+-------+------+-------------------+------+---------+------+------+------------------------------------------------+

possible_keys = i_resourcepool_id ,但是 key = NULL, resourcepool_id 有索引,但是没有用到

原因是

a.`id` int(11) NOT NULL AUTO_INCREMENT,
b.`resourcepool_id` varchar(36) COLLATE utf8_bin NOT NULL DEFAULT '',

id 与 resourcepool_id 类型不符,隐式转换

问题总结

JOIN 关联字段类型一定要相同。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值