2016-08-15 10 views
1

私は私のテーブルが4列あり、代替SQLコードこのsqlアルゴリズムのパフォーマンスが向上しましたか?

を探しています:Id, Zip code, timestamp and user value.

行例:2299898;"40";"2011-03-28 00:45:00+02";1.9

私は結果がどこの時間、各郵便番号のために一日のために設定を取得したいがタイムスタンプの前にあります。もちろん、各行のユーザーデータ。これまで

マイクエリ:

SELECT DISTINCT 
    FIRST_VALUE(timestamp) OVER (
     PARTITION BY zipcode, DATE(timestamp) 
     ORDER BY timestamp DESC 
    ) AS timestamp, 
    zipcode, 
    FIRST_VALUE(userdata) OVER (
     PARTITION BY zipcode, DATE(timestamp) 
     ORDER BY timestamp DESC 
    ) AS userdata 
+0

タグあなたが使用しているDBMS。パフォーマンスに関する質問は、ほとんど常にプロダクト固有です。 – jarlh

+0

こんにちはjarlh、それはポストグル9.1、 –

+0

あなたはパフォーマンスの問題は何ですか?実行時間が予想よりも長くかかる?実行計画を生成するために 'EXPLAIN'を使用しましたか? –

答えて

1

あなたはウィンドウ関数を必要としない:

select distinct on (zipcode, timestamp::date) 
    timestamp, 
    zipcode, 
    userdata 
from t 
order by zipcode, timestamp::date desc, timestamp desc 

チェックdistinct on

+0

は完璧と思われます。スレッドを閉じる前に実際のデータベース(明日)をテストする必要がありますが、私のローカルテストの最初のテストでは、クエリが10倍効率的であることが示されます。 ありがとう、本当にあなたの答えに感謝します。 –

+0

ありがとうございます。それは完全に動作します –

関連する問題