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?

Reply via email to