1
msg7086 2019-11-21 01:39:11 +08:00
通过索引?
|
2
binux 2019-11-21 01:41:26 +08:00
plan 啊,mysql 需要知道要扫描多少行,才能决定是用索引还是干脆就直接 scan 快。
|
3
ra1983 2019-11-21 01:45:04 +08:00 via Android
通过 statistics
|
4
littlemoney OP @binux 可能我表述的不清楚,我的疑问是,mysql 是怎么再执行前就能预判出要扫描多少行的呢?因为我发现,如果你 range 索引的区间选定的很大,超过全表数据 40%的阈值时?(这个可能不准确,不过我试下来的确有这个阈值在),这个时候哪怕你加了索引,它也不会走索引,会全表扫描,我的疑问就在这里,它通过什么手段,在执行前能估计出要扫描的行数呢
|
5
richard1122 2019-11-21 09:50:22 +08:00
|
6
richard1122 2019-11-21 09:51:42 +08:00
|
7
littlemoney OP @richard1122 嗯嗯,好的,谢谢大佬,我瞧瞧
|
8
xh520630 2019-11-21 10:20:36 +08:00
会计算使用索引和不使用索引的消耗然后取个小的
有个啥方法通过前多少条有多少命中索引的推测全表有多少条数据符合条件然后计算 |