diff --git a/aleksis/apps/alsijil/data_checks.py b/aleksis/apps/alsijil/data_checks.py
index 97062cc54712051d9db8a6b1f8eaa9a4e44b60e0..c1264e18171eb2241b992df23b05cb1a1a605004 100644
--- a/aleksis/apps/alsijil/data_checks.py
+++ b/aleksis/apps/alsijil/data_checks.py
@@ -1,10 +1,12 @@
 import logging
 
 from django.db.models import F
+from django.db.models.expressions import ExpressionWrapper, Func, Value
+from django.db.models.fields import DateField
+from django.db.models.functions import Concat
 from django.db.models.query_utils import Q
 from django.utils.translation import gettext as _
 
-from aleksis.apps.chronos.util.date import week_weekday_to_date
 from aleksis.core.data_checks import DataCheck, IgnoreSolveOption, SolveOption
 
 
@@ -86,6 +88,15 @@ class NoGroupsOfPersonsSetInPersonalNotesDataCheck(DataCheck):
             cls.register_result(note)
 
 
+weekday_to_date = ExpressionWrapper(
+    Func(
+        Concat(F("year"), F("week")), Value("IYYYIW"), output_field=DateField(), function="TO_DATE"
+    )
+    + F("lesson_period__period__weekday"),
+    output_field=DateField(),
+)
+
+
 class LessonDocumentationOnHolidaysDataCheck(DataCheck):
     """Checks for lesson documentation objects on holidays.
 
@@ -106,17 +117,18 @@ class LessonDocumentationOnHolidaysDataCheck(DataCheck):
 
         from .models import LessonDocumentation
 
-        holidays = list(Holiday.objects.all())
+        holidays = Holiday.objects.all()
 
         documentations = LessonDocumentation.objects.filter(
             ~Q(topic="") | ~Q(group_note="") | ~Q(homework="")
-        )
-
-        for doc in documentations:
-            logging.info(f"Check lesson documentation {doc}")
-            day = week_weekday_to_date(doc.calendar_week, doc.lesson_period.period.weekday)
-            if len(list(filter(lambda h: h.date_start <= day <= h.date_end, holidays))) > 0:
-                logging.info("  ... on holidays")
+        ).annotate(actual_date=weekday_to_date)
+
+        for holiday in holidays:
+            docs_filtered_by_date = documentations.filter(
+                actual_date__gte=holiday.date_start, actual_date__lte=holiday.date_end
+            )
+            for doc in docs_filtered_by_date:
+                logging.info(f"Lesson documentation {doc} is on holidays")
                 cls.register_result(doc)
 
 
@@ -140,17 +152,18 @@ class PersonalNoteOnHolidaysDataCheck(DataCheck):
 
         from .models import PersonalNote
 
-        holidays = list(Holiday.objects.all())
+        holidays = Holiday.objects.all()
 
         personal_notes = PersonalNote.objects.filter(
             ~Q(remarks="") | Q(absent=True) | ~Q(late=0) | Q(extra_marks__isnull=False)
-        )
-
-        for note in personal_notes:
-            logging.info(f"Check personal note {note}")
-            day = week_weekday_to_date(note.calendar_week, note.lesson_period.period.weekday)
-            if len(list(filter(lambda h: h.date_start <= day <= h.date_end, holidays))) > 0:
-                logging.info("  ... on holidays")
+        ).annotate(actual_date=weekday_to_date)
+
+        for holiday in holidays:
+            notes_filtered_by_date = personal_notes.filter(
+                actual_date__gte=holiday.date_start, actual_date__lte=holiday.date_end
+            )
+            for note in notes_filtered_by_date:
+                logging.info(f"Personal note {note} is on holidays")
                 cls.register_result(note)