我目前正在execution plan
中学习MySql
我从这里使用转储数据。
我在from_date
表的dept_emp
字段中添加了新索引,名为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
...
我知道错了吗?
答案 0 :(得分:0)
INDEX(from_date)
?WHERE from_date>='1985-01-01'
?然后,优化器决定简单地扫描数据可能会更快,过滤就可以了。由于索引BTree和数据BTree之间的反弹,替代方案(使用索引)可能成本高昂。
使用更新的日期;优化器可能会改变主意并使用索引。