Använd DAYOFWEEK i din fråga, något som:
SELECT * FROM mytable WHERE MONTH(event_date) = 5 AND DAYOFWEEK(event_date) = 7;
Detta kommer att hitta all information för lördagar i maj.
För att få de snabbaste läsningarna lagra ett denormaliserat fält som är veckodagen (och allt annat du behöver). På så sätt kan du indexera kolumner och undvika genomsökningar av hela tabeller.
Prova bara ovanstående först för att se om det passar dina behov och om det inte gör det, lägg till några extra kolumner och lagra data på skriv. Se bara upp för uppdateringsavvikelser (se till att uppdatera kolumnen day_of_week om du ändrar event_date).
Observera att de denormaliserade fälten kommer att öka tiden det tar att göra skrivningar, öka beräkningarna vid skrivning och ta upp mer utrymme. Se till att du verkligen behöver nyttan och kan mäta att den hjälper dig.