IN 조건 - AWS Clean Rooms

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

IN 조건

원래 요청 ping에 대한 IN 조건은 값 집합 또는 하위 쿼리의 멤버십 값을 테스트합니다.

구문

expression [ NOT ] IN (expr_list | table_subquery)

인수

expression

expr_list 또는 table_subquery를 대상으로 평가되는 숫자, 문자 또는 날짜/시간 표현식으로서 해당 목록이나 하위 쿼리의 데이터 형식과 호환되어야 합니다.

expr_list

쉼표로 구분된 표현식 1개 이상, 또는 쉼표로 구분된 표현식 집합 1개 이상이며 괄호로 경계를 표시합니다.

table_subquery

행이 1개 이상 포함되어 있지만 select 목록의 열은 1개로 제한된 테이블로 평가되는 하위 쿼리입니다.

IN | NOT IN

IN은 표현식이 표현식 목록 또는 쿼리의 멤버인 경우 true를 반환합니다. NOT 표현식이 멤버가 아닌 경우 IN은 true를 반환합니다. IN 및 NOT IN은를 반환NULL하고 다음 경우에는 행이 반환되지 않습니다. 표현식이 null을 생성하는 경우 또는 일치하는 expr_list 또는 table_subquery 값이 없고 이러한 비교 행 중 하나 이상이 null을 생성하는 경우.

예시

다음 조건은 나열된 값일 때만 true로 평가됩니다.

qtysold in (2, 4, 5) date.day in ('Mon', 'Tues') date.month not in ('Oct', 'Nov', 'Dec')

대용량 IN 목록의 최적화

값이 10개 이상인 IN 목록은 쿼리 성능의 최적화를 위해 내부에서 스칼라 배열로 평가됩니다. 값이 10개 미만인 IN 목록은 OR 조건자의 연속으로 평가됩니다. 이 최적화는 SMALLINT, , INTEGER, BIGINTREAL, DOUBLE PRECISION, BOOLEAN, CHAR, VARCHAR, DATETIMESTAMP, 및 TIMESTAMPTZ 데이터 유형에 대해 지원됩니다.

쿼리의 EXPLAIN 출력을 보고이 최적화의 효과를 확인합니다. 예시:

explain select * from sales QUERY PLAN -------------------------------------------------------------------- XN Seq Scan on sales (cost=0.00..6035.96 rows=86228 width=53) Filter: (salesid = ANY ('{1,2,3,4,5,6,7,8,9,10,11}'::integer[])) (2 rows)