[英]Why optimizer use 'ALL' type instead of 'index' type?
我目前正在学习MySql
execution plan
。
我从这里使用转储数据。
我向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 scan
比table full scan
更好...
我知道错吗?
INDEX(from_date)
? WHERE from_date>='1985-01-01'
吗? 然后,优化器决定仅扫描数据并进行过滤就可能更快。 替代方法(使用索引)可能会很昂贵,因为索引BTree和数据BTree之间会发生反弹。
使用较新的日期; 优化器可能会改变主意并使用索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.