Hi Michael - we do store the repetitions and exceptions in a separate database table to the event desciptions and titles etc.
Or are you thinking of a table with a table of all possible dates with references to the events that occur on them. If so I have experimented with this approach to optimising the database queries but didn't find it any faster
The base table is the vevent table, details are in the details table, repetitions in the repetitions table, rrule in the rrule table, exceptions in the exceptions table - the field names should allow you to generate the joins you need. For an example take a look at the components/com_jevents/libraries/dbModel.php file
If you do find a faster way to generate the list of events that fall within a time window I would be very interested in testing out your code.