У нас есть таблица Postgres с полем отметки времени created_at
.На регулярной основе нам нужно находить все записи с полем дня created_at
, представляющим собой определенное число.
Мы можем выполнить запрос, подобный
select * from table where extract(day from created_at) = 3;
Я подозреваю, что это ненеэффективно, то есть выполняет полное сканирование таблицы.Если да, могу ли я как-то создать индекс, чтобы сделать вышеописанное эффективным?
Если это невозможно, мы можем создать отдельный столбец с именем created_at_day
и создать для него индекс.
Итакмы можем просто выполнить запрос как
select * from table where created_at_day = 3;
Допустим, created_at
можно обновить.Всякий раз, когда это происходит, created_at_day
также следует обновлять.
Предоставляет ли Postgres какую-либо поддержку для автоматической синхронизации created_at_day
с created_at
?Если да, то как?
Конечно, это можно сделать в логике приложения.Поэтому, когда created_at
создается или обновляется, мы обновляем столбец created_at_day
.Но просто интересно, есть ли более простой, автоматизированный способ сделать это.
Спасибо