- 카테고리:
LIMIT / FETCH¶
문 또는 하위 쿼리에서 반환되는 최대 행 수를 제한합니다. LIMIT(PostgreSQL 구문) 및 FETCH(ANSI 구문)가 둘 다 지원되며 동일 결과를 생성합니다.
- 참고 항목:
구문¶
PostgreSQL 구문¶
ANSI 구문¶
매개 변수¶
count반환되는 행 수입니다. 음이 아닌 정수 상수여야 합니다.
NULL, 빈 문자열(
''),$$$$값도 허용되며 “무제한”으로 처리됩니다. 이는 문에 매개 변수를 동적으로 바인딩할 때 불완전한 매개 변수 목록을 수신하는 경우의 커넥터 및 드라이버(예: JDBC 드라이버)에 주로 유용합니다.OFFSETstart제한되거나 가져온 행이 반환되는 기준 행 번호입니다. 음이 아닌 정수 상수여야 합니다.
OFFSET을 생략하면 결과 세트의 첫 번째 행에서 출력이 시작됩니다.NULL, 빈 문자열(
''),$$$$값도 허용되며 0으로 처리됩니다(즉, 행을 건너뛰지 않음). 이는 문에 매개 변수를 동적으로 바인딩할 때 불완전한 매개 변수 목록을 수신하는 경우의 커넥터 및 드라이버(예: JDBC 드라이버)에 주로 유용합니다.ONLY출력에 영향을 주지 않는 선택적 키워드입니다. 이는 읽는 사람에게 강조하기 위한 용도로 사용됩니다.
사용법 노트¶
ORDER BY 절은 필요하지 않습니다. 그러나 ORDERBY 절이 없으면 결과는 비결정적입니다. 쿼리 결과가 반드시 특정 순서로 되어 있지는 않기 때문입니다. 반환된 결과를 제어하려면 ORDER BY 절을 사용하십시오.
하위 쿼리의 ORDER BY 절은 해당 하위 쿼리 내에서만 순서를 보장합니다. 외부 쿼리 수준에서는 순서가 유지되지 않습니다. LIMIT 절이 다른 중첩 수준의 ORDER BY 절을 사용하는 경우, 최적화 프로그램은 예상대로 LIMIT 절을 적용하지 않을 수 있으며, 반환된 행 수가 LIMIT 값과 다를 수 있습니다. 동일한 하위 쿼리에 대한 COUNT(*) 쿼리는 반환된 실제 행 수와 다른 행 수를 보고할 수도 있습니다.
예를 들어, 다음 쿼리에서 가장 내부의 하위 쿼리는 결과를 정렬하고, 중간의 하위 쿼리는 출력을 6개 행으로 제한하며, 외부 쿼리는 출력을 100개 행으로 제한합니다. 내부 LIMIT 절은 더 작지만 ORDER BY 절이 LIMIT 절과 다른 하위 쿼리에 있으므로 결과를 예측할 수 없으며 쿼리가 6개보다 많거나 적은 행을 반환할 수 있습니다.
예기치 않은 결과를 방지하려면 ORDER BY 절 및 LIMIT(또는 FETCH) 절을 동일한 쿼리 수준에서 유지합니다.
Top-K 정리는 LIMIT 및 ORDER BY 절을 모두 포함하는 쿼리의 성능을 향상시킬 수 있습니다. 자세한 내용은 쿼리 성능 향상을 위한 Top-K 정리 섹션을 참조하십시오.
TOP
n및 LIMITcount는 동등합니다.LIMIT 절과 SAMPLE 절은 모두 테이블에서 행 중 일부를 반환합니다. LIMIT 절을 사용할 경우 Snowflake는 가능한 가장 빠른 방법으로 지정된 수의 행을 반환합니다. SAMPLE 절을 사용할 경우 Snowflake는 해당 절에 지정된 샘플링 방법에 따라 행을 반환합니다.
예¶
다음 예제에서는 LIMIT의 효과를 보여줍니다. 단순화를 위해 이러한 쿼리는 ORDER BY 절을 생략하며, 출력 순서가 첫 번째 쿼리에 표시된 것과 항상 동일하다고 가정합니다. 실제 쿼리에는 ORDER BY가 포함되어야 합니다.
아래 예제에서는 다음을 나타내기 위해 NULLs을 사용하는 방법을 보여줍니다.
행 수에 제한이 없습니다.
행 1에서 시작합니다(행을 건너뛰지 않음).