我想知道为什么没有在RANGE
类型中使用此索引,而是在INDEX
类型中使用此索引:
索引:
create index myindex on orders(order_date);
查询:
explain select order_date from orders where order_date between '2020-01-01 00:00:00' and '2020-12-31 23:59:59';
在输出中,TYPE
列设置为INDEX
。我认为,它应该在索引中找到日期比第一个大的第一个记录,然后再通过链表,但是如果是这种情况,则类型应为range
,而不是INDEX
。
此外,还使用force index(report_ordini_per_utente_in_un_periodo)
子句上的from
,类型仍然是index
我正在使用MariaBD 10.1.43
原来是一种错误,因为我在数据库中拥有的所有记录都在该范围内,因此它显然必须遍历整个索引,这就是为什么它将TYPE
标记为INDEX
而不是RANGE
。更为奇怪的是,假设查询具有order_date between X and Y
,如果所有记录的日期都大于X,但并非所有记录的日期都小于Y,它也会将其标记为INDEX
而不是RANGE
>