You can do either, I would recommend pruning based on last update. To do this, add an int(11) field named LastTouched and when you create or update a record, set it to get_systime(). At map change, execute this to delete records that have not been touched in over 30 days (86400 is the number of seconds in 1 day).
PHP Code:
formatex( szSQL , charsmax( szSQL ) , "DELETE FROM myTable WHERE LastTouched < %d;" , ( get_systime() - ( 30 * 86400 ) ) );
__________________