PolarDB在测试环境为什么模似不出来?这个区分度很低了吧。200W行 都只有2的区分度。但实际我关联还是会走这个索引 库 erp_ql_93
explain
select * FROM erp_goods_stock_inout_deal a
LEFT JOIN erp_bill_real_inout jzxs ON jzxs.profileid = a.profileid AND jzxs.frombillid = a.billid AND jzxs.frombilldetailid = a.billdetailid
AND jzxs.billtype = 611
WHERE a.billtype IN (601, 602, 603, 607, 715)
AND a.profileid = 200000835
AND a.billdate >= '2023-03-01'
AND a.billdate < '2023-05-01'
这个是因为PolarDB用的是估算行数来推ref的代价。社区是给了一个最差代价。这里和直方图没有直接关系。你目前添加直方图不会是Plan得到修正。Polar中你可以配置ref_index_cost_records_threshold为18446744073709551615 修正。如果要做修正,全局变量我可以先帮你后台配置。这里是如果你访问的是少的数据把这个值调大就会很好。如果访问多的数据,访问索引回表会非常多,反而会更慢。此回答整理自钉群“PolarDB 专家面对面 - 慢SQL索引选择优化器新特性”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云关系型数据库主要有以下几种:RDS MySQL版、RDS PostgreSQL 版、RDS SQL Server 版、PolarDB MySQL版、PolarDB PostgreSQL 版、PolarDB分布式版 。