I have an events tables in my db, which includes among others start_date and end_date columns.
I frequently run queries like
where start_date > 'some starting date' and end_date < 'some end date'
The MySQL optimizer will use the indexes where it thinks it is appropriate to do so:
A B-tree index can be used for column comparisons in expressions that use the =, >, >=, <, <=, or BETWEEN operators.
Sometimes MySQL does not use an index, even if one is available. One circumstance under which this occurs is when the optimizer estimates that using the index would require MySQL to access a very large percentage of the rows in the table. (In this case, a table scan is likely to be much faster because it requires fewer seeks.)
You might find these interesting: