使用 timestamp(0) 或 timestamptz(0)
优化功能提供建议,以帮助您识别和解决因在 PostgreSQL 中使用 @db.Timestamp(0)
和 @db.Timestamptz(0)
原生类型而导致的性能问题。
以下 User
模型中使用了 @db.Timestamp(0)
和 @db.Timestamptz(0)
原生类型
model User {
// ...
date DateTime @db.Timestamp(0)
deletedAt DateTime @db.Timestamptz(0)
// ...
}
为什么这是一个问题
当使用精度为 0
的 @db.Timestamp(n)
或 @db.Timestamptz(n)
列时,数据库会将时间舍入到最接近的整数秒,这可能会导致意外的结果。
例如,如果您将当前时间(例如 15:30:45.678
)插入到具有此精度的列中,它将舍入到 15:30:46
。此行为可能导致记录的时间比原始时间提前最多半秒,当需要精确的时间准确性时,这可能会令人惊讶。