datetime字段上的MySQL索引不是RANGE类型,而是使用INDEX类型

问题描述 投票:1回答:1

我想知道为什么没有在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

mysql database indexing mariadb
1个回答
0
投票

原来是一种错误,因为我在数据库中拥有的所有记录都在该范围内,因此它显然必须遍历整个索引,这就是为什么它将TYPE标记为INDEX而不是RANGE。更为奇怪的是,假设查询具有order_date between X and Y,如果所有记录的日期都大于X,但并非所有记录的日期都小于Y,它也会将其标记为INDEX而不是RANGE >

© www.soinside.com 2019 - 2024. All rights reserved.