MySQL query not using an index when table contains many records
The table size is not the villain.  It's the estimated number of rows.

The query optimizer, in this case (MyISAM, key starting with rtime, etc), will do something like this:


estimate the percentage of the table to scan, based on "WHERE rtime BETWEEN..."
If that is "small" (say, less than 20%, but that is not a hard number), use the INDEX; else do a table scan.


Step 1 depends on the "statistics" that are kept with the MyISAM table.  The stats are usually pretty accurate, but they can become less accurate.  ANALYZE TABLE is the fix for that.  (I don't think I have ever seen a need for ANALYZE being run more than monthly; usually it is not needed at all.)

The reason for the to-INDEX-or-not-to-INDEX question goes something like this...  When using the INDEX, the execution has to bounce between index 'rows' and data rows.  The data rows are potentially randomly scattered, leading to (potentially) lots of I/O.  Hence, doing a 'table scan' is preferred after some point.