GreatSQL社区

搜索

李宁ning

MySQL8差劲的CBO

李宁ning 已有 466 次阅读2023-3-29 16:23 |个人分类:MySQL|系统分类:运维实战

问题1:

从上图的执行计划中可以看到,是两个执行计划,同样的是使用的索引idx_test。当在关联表中使用idx_test索引没有产生filter当在单表查询中虽然索引覆盖了where条件中的列是会产生filter的

问题2:

不理解的是为什么MySQL的执行计划使用where条件的覆盖索引得出的行数和使用关联列得出的行数为啥不一样呢

如上两图是一个sql跑出来的执行计划,t表的where条件如下,相信大家从执行计划中也看出来了。

t.deleted = 0

AND t.company_code = 'XLYY0'

AND t.accrual_rebate_status = 0

最上面的图的执行计划用的索引是组合索引idx_com_expect_rebate_status_createtime(company_code,expect_rebate_status,create_time)

在执行计划中刚好查询出来的结果是155421行,如下图

而使用了组合索引idx_test(company_code,deleted,accrual_rebate_status)的执行计划扫描了155671要多出几百行,为什么用了覆盖索引的行数倒多了

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-5-6 05:26 , Processed in 0.011991 second(s), 8 queries , Redis On.
返回顶部