繁体   English   中英

为什么优化器使用“ ALL”类型而不是“ index”类型?

[英]Why optimizer use 'ALL' type instead of 'index' type?

我目前正在学习MySql execution plan
我从这里使用转储数据。

https://dev.mysql.com/doc/employee/zh/sakila-structure.html

我向dept_emp表的from_date字段添加了新索引,名为ix_fromdate
我输入如下

EXPLAIN
SELECT *
FROM dept_emp
WHERE from_date>='1985-01-01'  

执行普通结果如下
在此处输入图片说明

我知道rows值是该表中行数的更接近值,并且优化器未使用range索引。
我认为type应该是index ,但是ALL
他们为什么要进行table full scan
ix_fromdate的索引,为什么他们没有使用它?
我知道index full scantable full scan更好...
我知道错吗?

  • 即使您有INDEX(from_date)
  • 但是,超过20%的表满足WHERE from_date>='1985-01-01'吗?

然后,优化器决定仅扫描数据并进行过滤就可能更快。 替代方法(使用索引)可能会很昂贵,因为索引BTree和数据BTree之间会发生反弹。

使用较新的日期; 优化器可能会改变主意并使用索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM