timestamp(0) または timestamptz(0) の使用
Optimize は、PostgreSQL での @db.Timestamp(0)
および @db.Timestamptz(0)
ネイティブ型の使用によって引き起こされるパフォーマンスの問題を特定し、解決するのに役立つ推奨事項を提供します。
@db.Timestamp(0)
および @db.Timestamptz(0)
ネイティブ型は、以下の User
モデル内で使用されています。
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
に切り上げられます。この動作により、記録された時間が元の時間と比較して最大で 0.5 秒未来に表示される可能性があります。これは、正確な時刻精度が重要な場合に驚くかもしれません。