[PostgreSQL] 최댓값 구할 때 Max vs Order by

2025. 3. 22. 01:00·개발 (Development)/PostgreSQL

PostgreSQL에서 최댓값을 구하는 방법은 MAX() 함수와 ORDER BY ... DESC LIMIT 1 방식이 있습니다. 각각의 차이점과 성능을 비교해보겠습니다.

1. MAX() 함수 사용

최댓값을 구할 때 MAX()를 사용하면 쉽게 값을 찾을 수 있습니다.

SELECT MAX(column_name) FROM table_name;

장점

  • 최댓값을 빠르게 조회할 수 있음
  • 정렬이 필요하지 않음

단점

  • 해당 값을 가진 행을 가져오려면 서브쿼리를 사용해야 함
SELECT * FROM table_name WHERE column_name = (SELECT MAX(column_name) FROM table_name);

2. ORDER BY DESC LIMIT 1 사용

최댓값을 포함한 행을 가져올 때 유용합니다.

SELECT * FROM table_name ORDER BY column_name DESC LIMIT 1;

장점

  • 최댓값을 가진 행을 쉽게 조회 가능
  • 인덱스가 있다면 매우 빠르게 실행됨

단점

  • 인덱스가 없으면 전체 정렬이 필요하여 성능이 떨어질 수 있음

3. 성능 비교

  • 인덱스가 있을 경우: ORDER BY ... DESC LIMIT 1이 더 빠름
  • 인덱스가 없을 경우: MAX()가 더 유리할 수 있음 (정렬이 필요 없음)

4. 인덱스를 활용한 최적화

최적의 성능을 위해 B-Tree 인덱스를 추가하는 것이 좋습니다.

CREATE INDEX idx_column_name ON table_name (column_name);

이렇게 하면 두 방식 모두 빠르게 실행됩니다.

5. 결론

  • 최댓값만 필요하면 MAX()
  • 최댓값을 가진 행이 필요하면 ORDER BY ... DESC LIMIT 1
  • 인덱스를 추가하면 성능이 크게 향상됨
반응형

'개발 (Development) > PostgreSQL' 카테고리의 다른 글

[PostgreSQL/TimescaleDB] TimescaleDB 사용 중 hypertable 및 chunk 포함 전체 백업과 복원하기  (0) 2025.04.05
[PostgreSQL] MyBatis에서 PostgreSQL JSON 데이터 처리하기  (1) 2025.03.30
[PostgreSQL] 요소 별 최신 데이터 조회하기  (0) 2025.03.22
[PostgreSQL] PostgreSQL에서 특정 값의 존재 여부 확인하여 조회하기  (0) 2025.03.16
PostgreSQL에서 기존 데이터가 있는 상태에서 복원하기  (0) 2025.02.23
'개발 (Development)/PostgreSQL' 카테고리의 다른 글
  • [PostgreSQL/TimescaleDB] TimescaleDB 사용 중 hypertable 및 chunk 포함 전체 백업과 복원하기
  • [PostgreSQL] MyBatis에서 PostgreSQL JSON 데이터 처리하기
  • [PostgreSQL] 요소 별 최신 데이터 조회하기
  • [PostgreSQL] PostgreSQL에서 특정 값의 존재 여부 확인하여 조회하기
LoopThinker
LoopThinker
모르는 것을 알아가고, 아는 것을 더 깊게 파고드는 공간
  • LoopThinker
    CodeMemoir
    LoopThinker
  • 전체
    오늘
    어제
    • 분류 전체보기 (235) N
      • 개발 (Development) (168) N
        • Algorithm (1)
        • Angular (1)
        • AWS (7)
        • DeepSeek (2)
        • Docker (7)
        • Git (3)
        • Java (34)
        • JavaScript (4)
        • Kafka (5)
        • Kubernetes (4)
        • Linux (7)
        • PostgreSQL (38)
        • Python (33) N
        • React (3)
        • TypeScript (3)
        • Vue.js (5)
        • General (11)
      • 데이터 분석 (Data Analysis) (1)
      • 알고리즘 문제 풀이 (Problem Solving.. (27)
      • 자격증 (Certifications) (24)
        • ADsP (14)
        • 정보처리기사 (4)
        • Linux Master (5)
        • SQLD (1)
      • 기술 동향 (Tech Trends) (12)
      • 기타 (Others) (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준알고리즘
    java
    PostgreSQL
    python
    Vue.js
    ADsP
    Kafka
    docker
    백준
    백준자바
    MyBatis
    deepseek
    백준온라인저지
    리눅스 마스터 2급
    timescaledb
    DevOps
    자바
    JSON
    JPA
    javascript
    Kubernetes
    데이터분석
    리눅스 마스터 2급 2차
    AWS
    오답노트
    파이썬
    Linux master
    springboot
    Linux
    pandas
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LoopThinker
[PostgreSQL] 최댓값 구할 때 Max vs Order by
상단으로

티스토리툴바