기초 SQL입문

ORDER BY 정렬

조회 결과를 특정 컬럼 기준으로 정렬하는 절

정의

결과를 지정한 컬럼 기준으로 정렬해서 보여준다. "ORDER BY 나이 DESC"라고 쓰면 나이 많은 순(내림차순)으로 정렬된다. ASC는 오름차순(기본값), DESC는 내림차순. 여러 컬럼을 콤마로 이어 쓰면 1순위→2순위 순서로 정렬한다.

왜 중요한가?

ORDER BY가 없으면 결과의 순서가 보장되지 않는다. 같은 쿼리를 두 번 실행해도 매번 순서가 다르게 나올 수 있다. 사용자에게 보여주는 결과는 항상 의도한 순서로 나오도록 ORDER BY를 명시해야 한다.

틀리기 쉬운 포인트

  • !기본 정렬 방향은 ASC(오름차순)입니다. DESC를 써야 내림차순. 날짜를 최신 순으로 보려면 반드시 DESC를 명시해야 합니다.
  • !ORDER BY는 SQL 실행 순서에서 가장 마지막에 실행됩니다. SELECT에서 정의한 별칭(alias)을 ORDER BY에서 사용할 수 있는 이유가 이것입니다.
  • !NULL 값의 정렬 위치는 DB마다 다릅니다. 오라클은 ASC 시 NULL이 마지막, PostgreSQL은 NULL이 마지막. 명시적으로 NULLS FIRST/LAST를 쓰는 것이 안전합니다.

예시

SELECT name, salary
FROM employees
ORDER BY salary DESC, name ASC;

성능 포인트

!인덱스의 정렬 순서와 일치하면 SORT 작업이 생략된다. PGA가 부족하면 Disk Sort로 떨어져 성능이 급락.

관련 개념

관련 문제 풀어보기

관련 카테고리