MySQL的count查询超级慢

sql执行情况
看到平均执行时间13.773s,意识到自己的认知漏洞了,一直认为有个记录总数的地方,直接返回这个数就好了

原因

主键是聚集索引,所以不选择主键,会选择你的索引里面长度最短的那个,如果你主键加了索引,那是非聚集索引,因为索引长度最短,所以会选择主键索引

加索引前,key_len为82
在这里插入图片描述
加索引后,key_len为4在这里插入图片描述

解决办法

给主键加上唯一索引

ALTER TABLEADD INDEX `u_idx_id` (`id`) USING BTREE;

加索引后执行时间为4s左右

问题

1、为什么key的长度会显著影响遍历速度?
前后两个查询计划中最显著的区别就是 key_len,一个长度为4字节,一个为82字节,这导致了count查询速度的巨大差异。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐