I'm using MySQL 5.0.67-0ubuntu6. I'm stepping through "MySQL - 4th Edition". There's a simple table called "member" that we've just added an index to, for the "expiration" column, which is a date column.
The current example in the book is: mysql> EXPLAIN SELECT * FROM MEMBER > -> WHERE expiration < DATE_ADD(CURDATE(), INTERVAL 30 DAY)\G > *************************** 1. row *************************** > id: 1 > select_type: SIMPLE > table: MEMBER > type: range > possible_keys: expiration > key: expiration > key_len: 4 > ref: NULL > rows: 6 > Extra: Using where > > Unfortunately, that's not the output I'm getting. It's actually this: mysql> EXPLAIN SELECT * FROM MEMBER > -> WHERE expiration < DATE_ADD(CURDATE(), INTERVAL 30 DAY)\G > *************************** 1. row *************************** > id: 1 > select_type: SIMPLE > table: MEMBER > type: all > possible_keys: expiration > key: NULL > key_len: NULL > ref: NULL > rows: 102 > Extra: Using where > > Copying the index info from SQuirreL, it is: INDEX_QUALIFIER INDEX_NAME ORDINAL_POSITION COLUMN_NAME ASC_OR_DESC NON_UNIQUE TYPE CARDINALITY PAGES FILTER_CONDITION |expiration|1|expiration|A|true|3|102|0|<null> It's a bit hard to read, but I replaced tab characters with "|" between each column. Why might this query not be behaving as I expect?