diff --git a/biscuit/apps/chronos/migrations/0002_db_indexes.py b/biscuit/apps/chronos/migrations/0002_db_indexes.py
new file mode 100644
index 0000000000000000000000000000000000000000..49be25b9145eb526bcfa3c6aec74415fc6d6034b
--- /dev/null
+++ b/biscuit/apps/chronos/migrations/0002_db_indexes.py
@@ -0,0 +1,30 @@
+# Generated by Django 2.2.4 on 2019-09-04 13:22
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0001_initial'),
+        ('chronos', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.AlterUniqueTogether(
+            name='lessonsubstitution',
+            unique_together={('school', 'lesson_period', 'week')},
+        ),
+        migrations.AddIndex(
+            model_name='lesson',
+            index=models.Index(fields=['date_start', 'date_end'], name='chronos_les_date_st_5ecc62_idx'),
+        ),
+        migrations.AddIndex(
+            model_name='lessonperiod',
+            index=models.Index(fields=['lesson', 'period'], name='chronos_les_lesson__05250e_idx'),
+        ),
+        migrations.AddIndex(
+            model_name='timeperiod',
+            index=models.Index(fields=['time_start', 'time_end'], name='chronos_tim_time_st_491e4c_idx'),
+        ),
+    ]
diff --git a/biscuit/apps/chronos/models.py b/biscuit/apps/chronos/models.py
index d081812be4122662bd3423ce804667a9550c206e..1bf172e468f2872da2042a2feacab5f647a2041a 100644
--- a/biscuit/apps/chronos/models.py
+++ b/biscuit/apps/chronos/models.py
@@ -43,6 +43,7 @@ class TimePeriod(SchoolRelated):
     class Meta:
         unique_together = [['school', 'weekday', 'period']]
         ordering = ['weekday', 'period']
+        indexes = [models.Index(fields=['time_start', 'time_end'])]
 
 
 class Subject(SchoolRelated):
@@ -101,6 +102,7 @@ class Lesson(SchoolRelated):
 
     class Meta:
         ordering = ['date_start']
+        indexes = [models.Index(fields=['date_start', 'date_end'])]
 
 
 class LessonSubstitution(SchoolRelated):
@@ -118,6 +120,7 @@ class LessonSubstitution(SchoolRelated):
     room = models.ForeignKey('Room', models.CASCADE, null=True)
 
     class Meta:
+        unique_together = [['school', 'lesson_period', 'week']]
         ordering = ['lesson_period__lesson__date_start', 'week',
                     'lesson_period__period__weekday', 'lesson_period__period__period']
 
@@ -165,3 +168,4 @@ class LessonPeriod(SchoolRelated):
 
     class Meta:
         ordering = ['lesson__date_start', 'period__weekday', 'period__period']
+        indexes = [models.Index(fields=['lesson', 'period'])]