gpt4 book ai didi

日期时间字段上的 MySQL 索引不是 RANGE 类型,而是使用 INDEX 类型

转载 作者:行者123 更新时间:2023-11-30 21:24:57 26 4
gpt4 key购买 nike

我想知道为什么这个索引没有用在 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,而不是 索引

此外,还使用 ​​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

关于日期时间字段上的 MySQL 索引不是 RANGE 类型,而是使用 INDEX 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59604913/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com