メインコンテンツにスキップ

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 秒未来に表示される可能性があります。これは、正確な時刻精度が重要な場合に驚くかもしれません。