Как оптимизировать многоколоночную индексацию в Django с помощью PostgreSQL
В моем приложении есть такая модель:
class ObservedData(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
unique_id = models.CharField(max_length=128)
timestamp = models.DateTimeField()
value = models.FloatField(null=True)
90% моих запросов
select * from ObservedData where user=<user> AND unique_id=<uid> AND timestamp BETWEEN <date1> AND <date2>
Вот как я индексирую:
class Meta:
indexes = [
models.Index(fields=['user', 'unique_id', 'timestamp']),
models.Index(fields=['user', 'unique_id']),
models.Index(fields=['unique_id', 'timestamp']),
]
unique_together = ('user', 'unique_id', 'timestamp')
Является ли это правильным способом? Я заметил повышенный рост выделенного пространства базы данных и хотел бы узнать, не является ли это перегрузкой или ненужным перекрытием индексов.