ホームページ > データベース > mysql チュートリアル > PostgreSQLでタイムスタンプを5分間隔に切り詰める最速の方法は何ですか?

PostgreSQLでタイムスタンプを5分間隔に切り詰める最速の方法は何ですか?

DDD
リリース: 2024-12-26 12:14:10
オリジナル
575 人が閲覧しました

What's the Fastest Way to Truncate Timestamps to 5-Minute Intervals in PostgreSQL?

Postgres でのタイムスタンプの 5 分境界への効率的な切り詰め

タイムスタンプの切り詰めは時間分析に不可欠です。 Postgres は date_trunc 関数を提供しており、タイムスタンプをさまざまな単位に丸めることができます。ただし、最も近い 5 分境界に切り捨てるには、より具体的なアプローチが必要です。

通常、次の単純な方法が採用されます。

date_trunc('hour', val) + date_part('minute', val)::int / 5 * interval '5 min'
ログイン後にコピー

ただし、パフォーマンスが重要な場合は、可能な限り最速のソリューションを模索することが重要です。

代替アプローチ: エポックを通過するTime

別のアプローチには、タイムスタンプをエポック タイムスタンプに変換してから切り捨てることが含まれます。このメソッドは次のように表されます。

SELECT to_timestamp(
    floor(EXTRACT(epoch FROM ht.time) / EXTRACT(epoch FROM interval '5 min'))
    * EXTRACT(epoch FROM interval '5 min')
) FROM huge_table AS ht LIMIT 4000000
ログイン後にコピー

ベンチマークと結果

両方のメソッドのパフォーマンスを評価するために、400 万の大きなテーブルに対して非公式のベンチマークが実行されました。行。キャッシュの利点を防ぐために、クエリは交互に行われました。

結果:

Method Run 1 Run 3 Run 5
Epoch Time 39.368 seconds 39.526 seconds 39.883 seconds
Hour and Minute 34.189 seconds 37.028 seconds 32.397 seconds

結論

驚くべきことに、次の方法を使用します。 date_trunc と date_part は、一貫してエポックタイムアプローチよりも優れたパフォーマンスを示しました。エポックタイム方式は、より多用途でパラメータ化が容易であるにもかかわらず、より広範囲の時間単位の切り捨てのためにパフォーマンスをいくらか犠牲にします。

したがって、特に Postgres でタイムスタンプを 5 分境界に切り捨てるには、date_trunc を使用する簡単な方法が最適です。 date_part が推奨されるアプローチです。

以上がPostgreSQLでタイムスタンプを5分間隔に切り詰める最速の方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート