I can’t figure out why an datetime index is ignored by mysql if the greater than operator is used.
Here’s the table:
CREATE TABLE IF NOT EXISTS maverick_player_stints
( unique_id
int(10) unsigned NOT NULL default ‘0’, player_id
mediumint(9) NOT NULL default ‘0’, start_stint
datetime NOT NULL default ‘0000-00-00 00:00:00’, end_stint
datetime NOT NULL default ‘0000-00-00 00:00:00’, at_position
tinyint(3) unsigned NOT NULL default ‘0’, on_team
tinyint(3) unsigned NOT NULL default ‘0’, PRIMARY KEY (unique_id
), KEY player_id~stint
(player_id
,start_stint
), KEY stint_starts
(start_stint
)) ENGINE=InnoDB DEFAULT CHARSET=latin1
Here’s the first query explained:
explain select * from maverick_player_stints where start_stint = ‘2007-01-22 09:00:00’;
±—±------------±-----------------------±-----±--------------±-------------±--------±------±-----±------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |±—±------------±-----------------------±-----±--------------±-------------±--------±------±-----±------+| 1 | SIMPLE | maverick_player_stints | ref | stint_starts | stint_starts | 8 | const | 2 | | ±—±------------±-----------------------±-----±--------------±-------------±--------±------±-----±------+
Here’s the same query with the greater than operator:
explain select * from maverick_player_stints where start_stint > ‘2007-01-22 09:00:00’;
±—±------------±-----------------------±-----±--------------±-----±--------±-----±------±------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |±—±------------±-----------------------±-----±--------------±-----±--------±-----±------±------------+| 1 | SIMPLE | maverick_player_stints | ALL | stint_starts | NULL | NULL | NULL | 15401 | Using where | ±—±------------±-----------------------±-----±--------------±-----±--------±-----±------±------------+
Why is the possible key not used in the second case? It’s scanning the entire table. Is this something particular to the datetime data type?
I could use some help on this one, thanks.