Verwenden Sie DAYOFWEEK in Ihrer Abfrage so etwas wie:
SELECT * FROM mytable WHERE MONTH(event_date) = 5 AND DAYOFWEEK(event_date) = 7;
Hier finden Sie alle Informationen für die Samstage im Mai.
Um die schnellsten Lesevorgänge zu erhalten Speichern Sie ein denormalisiertes Feld, das den Wochentag darstellt (und was Sie sonst noch brauchen). Auf diese Weise können Sie Spalten indizieren und vollständige Tabellenscans vermeiden.
Probieren Sie einfach zuerst das obige aus, um zu sehen, ob es Ihren Anforderungen entspricht, und wenn dies nicht der Fall ist, fügen Sie einige zusätzliche Spalten hinzu und speichern Sie die Daten beim Schreiben. Achten Sie einfach auf Aktualisierungsanomalien (stellen Sie sicher, dass Sie die Spalte day_of_week aktualisieren, wenn Sie event_date ändern).
Beachten Sie, dass die denormalisierten Felder die für Schreibvorgänge benötigte Zeit verlängern, die Berechnungen beim Schreiben erhöhen und mehr Platz beanspruchen. Stellen Sie sicher, dass Sie den Nutzen wirklich brauchen und messen können, ob er Ihnen hilft.