暂无图片
阿里mysql没有走主键查询走了全表扫描
我来答
分享
暂无图片 匿名用户
阿里mysql没有走主键查询走了全表扫描

阿里mysql 5.6 数据库根据主键in查询,主键为字符串偶尔会出现全表扫描,in子名最多5个连续的字符串, 表的碎片率30%,又没办法手动重现。有谁遇到个吗。

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
chengang

in 这个where 条件过滤后的数据与全表的数据占比是什么情况呢?

可以贴一下执行计划出来

暂无图片 评论
暂无图片 有用 0
陈伟华


select <column_name> from <table_name> where id in ('220316022061585','220316022061586','220316022061587','220316022061588')

暂无图片 评论
暂无图片 有用 0
chengang

表 id即为主键吗? ID也是varchar类型吗?

如果上述两个成立,那这个语句是不可能会花到4S的啊。

暂无图片 评论
暂无图片 有用 0
陈伟华
2022-03-17
id为主键 varchar(30),我也想说不可能,但确实全表扫描 扫了118.72K行,这个行数据 跟记录数是差不多的
陈伟华
2022-03-17
手工执行查看执行计划走主键索引。
chengang

show variables like ‘%eq_range_index_dive_limit%’ 看一下这个参数是什么值呢

暂无图片 评论
暂无图片 有用 0
陈伟华
2022-03-17
这个值 是 10
陈伟华
2022-03-17
in 的数量少于10个
chengang
答主
2022-03-17
那现在你可以做两个尝试。一个是重建一下此表。二个是把in改写为or试试。如果是生产就先走试第二种
展开全部评论(1条)
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏