· 7 years ago · Jan 12, 2019, 11:52 AM
1MySQL not using index for BETWEEN query. What am I doing wrong?
2MariaDB [alienvault]> explain extended SELECT * FROM alienvault_siem.acid_event WHERE (timestamp BETWEEN '2012-10-09 11:20:17' AND '2012-10-10 03:20:17');
3+------+-------------+------------+------+---------------+------+---------+------+---------+----------+-------------+
4| id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
5+------+-------------+------------+------+---------------+------+---------+------+---------+----------+-------------+
6| 1 | SIMPLE | acid_event | ALL | timestamp | NULL | NULL | NULL | 4481579 | 50.00 | Using where |
7+------+-------------+------------+------+---------------+------+---------+------+---------+----------+-------------+
81 row in set, 1 warning (0.01 sec)
9
10CREATE TABLE IF NOT EXISTS `acid_event` (
11 (...)
12 `timestamp` datetime NOT NULL,
13 (...)
14 PRIMARY KEY (`id`),
15 (...)
16 KEY `timestamp` (`timestamp`),
17 (...)
18) ENGINE=InnoDB DEFAULT CHARSET=utf8;
19
20WHERE timestamp
21 BETWEEN str_to_date('2012-10-09 11:20:17','%Y-%m-%d %H:%i:%s')
22 AND str_to_date('2012-10-10 03:20:17','%Y-%m-%d %H:%i:%s')