gpt4 book ai didi

MySQL 不为两列日期范围使用索引

转载 作者:行者123 更新时间:2023-11-30 23:18:57 25 4
gpt4 key购买 nike

我有一个包含数百万行的表,其中有 2 个 DATE 列,用于指定开始和结束日期范围。我有一个用于两列的索引,但它没有被使用,查询需要 10 秒才能运行,这是完全不能接受的。我的查询很简单:

SELECT * FROM `events` WHERE `valid_from` <= "2013-05-05" AND `valid_to` >= "2013-05-05"

为什么这不使用索引并且运行时间这么长?

编辑

上面查询的EXPLAIN:

+----------------------------------------------------------------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----------------------------------------------------------------------------------------------------+
| 1 | SIMPLE | events | ALL | valid_from_to | NULL | NULL | NULL | 2166894 | Using where|
+----------------------------------------------------------------------------------------------------+

最佳答案

检查索引和查询中的字段顺序。另外,显示

 EXPLAIN SELECT * FROM `events` WHERE `valid_from` <= "2013-05-05" AND `valid_to` >= "2013-05-05"

尝试使用索引提示

SELECT * FROM `events` USE INDEX (`valid_from_to`)
WHERE `valid_from` <= "2013-05-05" AND `valid_to` >= "2013-05-05"

或者为每个字段创建两个索引,而不是一个。

关于MySQL 不为两列日期范围使用索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16392267/

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