SELECT ...
FROM 테이블
[WHERE ...]
[OEDER BY ...]
[LIMIT {출력행수 | ALL}] [OFFSET 건너뛸행수]
위 SELECT 문장의 5번 라인에 보이는 것처럼 LIMIT 다음에 출력할 행 수를 지정한다.
출력할 행 수는 일반적으로 양의 정수일 때 의미가 있으며, 출력할 행의 개수 대신 ALL이나 빈값(NULL)이 지정되면
LIMIT 절을 생략한 것과 동일하게 처리되어결과 집합의 모든 행이 출력된다.
출력할 행 수에 0을 지정하면 공집합(EMPTY SET) 이 반환된다.
위 SELECT 문장의 5번 라인에 제시된 OFFSET은 검색 결과 집합을 출력할때 건너뜀 행 수 를 지정한다.
즉, 검색결과 집합을 출력할 때 LIMIT 절을 사용하여 먼저 출력한 행이 있다면 그 행들을 건너뛰어 다음 행부터 출력하기 위한 목적으로 사용된다.
건너뛴다는 의미는 결과 집합의 첫 행부터 시작하여 OFFSET 절에 지정한 행 수를 지날 때까지는 결과 집합을 스캔만 하고,
지정한 행 수를 지나면 그 때부터 출력을 시작한다는 의미이다.
이 때 LIMIT 절이 있으면 LIMIT 절에 지정한 행 수까지만 출력이 되고,
LIMIT 절을 지정하지 않았으면 OFFSET절에 지정한 행 수를 지난 지점부터 결과 집합의 끝까지 모든 행이 출력된다.
LIMIT 절에 지정한 출력할 행 수보다 결과 집합 자체가 남은 결과 집합의 행 수가 적으면 이 제한값 이하의 행 수로 출력될 수 있다.
OFFSET 절의 건너뛸 행 수에 0이나 빈값(NULL)이 지정되면 OFFSET 절을 생략한 것과 동일하고,
결과 집합의 전체 행 수보다 큰 값을 지정하면 공집합이 반환된다.
PostgreSQL에서 LIMIT와 OFFSET 뒤에는 추가적인 키워드 없이 각각의 의미에 해당하는 숫자만 지정하면 된다.
< 간단요약 >
LIMIT으로 데이터 100개중 40개만 나와라 하면 40개 나올수있고 ,
LIMIT 40 뒤에 OFFSET 30 이 있으면 40개의 데이터 다음 데이터부터! 30개만 출력된단 뜻이다.
< 주의 >
OFFSET 절을 사용할 때 건너뛸 행 수가 커질수록 읽고 버릴 행도 늘어나 비효율이 커지고, 그만큼 쿼리 수행성능도 나빠질 수있다는 점을 고려해야 한다.
'DB > PostgreSQL' 카테고리의 다른 글
6. 일대 다 관계 One-to-Many (0) | 2022.10.29 |
---|---|
5. 문자열 병합/연결 함수 ||, CONCAT (0) | 2022.10.26 |
4. FETCH FIRST 절을 사용하여 TOP-N 쿼리를 처리할 수 있다. (0) | 2022.10.26 |
2. 컬럼 값 중복제거 DISTINCT (0) | 2022.10.24 |
1. 대소문자 구별없이 LIKE문 사용하고 싶을때 ILIKE (0) | 2022.10.24 |