2016-08-15 2 views
1

나는 다른 SQL 코드를 찾고 있어요이 sql 알고리즘의 성능이 더 좋습니까?

내 표 4 열이 있습니다 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

감사합니다. 완벽하게 작동합니다. –

관련 문제