加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

时间戳列上的MySQL索引不用于大日期范围

发布时间:2021-03-05 18:50:10 所属栏目:MySql教程 来源:网络整理
导读:我有桌子 +-------------------+----------------+------+-----+---------------------+-----------------------------+| Field | Type | Null | Key | Default | Extra |+-------------------+----------------+------+-----+---------------------+-------

mysql> select count(*) from table where schedule_time between '2013-08-16 12:48:00' and '2013-08-17 12:48:00';
+----------+
| count(*) |
+----------+
|    19440 |
+----------+
1 row in set (0.01 sec)

mysql> select count(*) from table where schedule_time between '2013-07-17 12:48:00' and '2013-08-17 12:48:00';
+----------+
| count(*) |
+----------+
|   597132 |
+----------+
1 row in set (0.00 sec)

服务器版本:5.5.24-0ubuntu0.12.04.1(Ubuntu) 最佳答案 MySQL优化器试图做最快的事情 – 它认为使用索引将花费比执行表扫描更长或更长的时间,它放弃了可用的索引.这就是你在例子中看到的情况:范围很小(1天),索引会更快;在范围很大的情况下,您可能会更多地打击表,也可以直接扫描表(请记住,使用索引包括搜索索引然后从表中获取索引记录 – 两组寻求).

如果您认为自己比优化器更清楚(它并不完美),请使用提示(http://dev.mysql.com/doc/refman/5.5/en/index-hints.html).

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读