欢迎光临
我们一直在努力

mysql 字符集造成的性能问题

简单的查询,返回同样的,用charge_id去关联,只要0.5s,但如果用order_id要18s! 什么原因? 

用order_id时,执行计划是用了Using join buffer (Block Nested Loop);原因查明:把
order_forInit里的order_id字符集是utf8,而
order_item_forInit里的order_id字符集是utf8mb4, 不同的字符集造成两个做join时,不能用上索引,会出现“Using join buffer (Block Nested Loop) ”。把
order_forInit里的order_id字符集
改成utf8mb4,就没性能问题了!! 不会出现Using join buffer (Block Nested Loop) 

explain

select count(*) from

order_forInit a,

order_item_forInit c,

product d

WHERE

—  a.order_id = c.order_id 

a.charge_id = c.charge_id

AND c.product_id = d.
product_id;

附录:

mysql字符集 utf8 和utf8mb4 的区别: https://blog.csdn.net/qq_37054881/article/details/90023611 

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。