In the last episode (Mar 06), Christian Hammers said:
> I have a table with a normal multiple key on a datetime field called
> "end". I want to search for the number of records in some months. I
> know that there are none.
> 
> Now "explain" tells me that a querey with a WHERE clause of
>       end between '2001-01-01' and '2001-04-01'
> affects just one row whereas
>       end > '2001-01-01'
> affects all 705949 rows! Why this? I cannot find the docs that
> explain this speed enhancement. I'd even thought that a ">" would be
> faster as it is just one check and the parser could say "every row"
> starting from index position X.

The 'rows' column in the EXPLAIN output is just a guess based on the
last results of ANALYZE TABLE.  If you've added records, the guess
could be off.  It doesn't really matter anyway, since the select type
is 'range; using index' for both queries, so they will be executed the
same way by mysql.

> Full explain results:
> mysql> explain  select count(*) from radius0800 where ende between "2001-01-01" and 
>"2001-04-01";
> 
>+------------+-------+---------------+------+---------+------+------+-------------------------+
> | table      | type  | possible_keys | key  | key_len | ref  | rows | Extra          
>         |
> 
>+------------+-------+---------------+------+---------+------+------+-------------------------+
> | radius0800 | range | ende          | ende |       4 | NULL |    1 | where used; 
>Using index |
> 
>+------------+-------+---------------+------+---------+------+------+-------------------------+
> 1 row in set (0.00 sec)
> 
> mysql> explain  select count(*) from radius0800 where ende > "2001-01-01";
> 
>+------------+-------+---------------+------+---------+------+--------+-------------------------+
> | table      | type  | possible_keys | key  | key_len | ref  | rows   | Extra        
>           |
> 
>+------------+-------+---------------+------+---------+------+--------+-------------------------+
> | radius0800 | range | ende          | ende |       4 | NULL | 705949 | where used; 
>Using index |
> 
>+------------+-------+---------------+------+---------+------+--------+-------------------------+
> 1 row in set (0.00 sec)

-- 
        Dan Nelson
        [EMAIL PROTECTED]

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to