WHERE 절에서 IN
대신 ANY를 사용하세요.기존 IN 절 외에도 ANY를 사용하여 WHERE 절의 결과를 필터링하는 것을 고려할 수 있습니다. PostgreSQL은 두 가지 구문 변형을 제공합니다:
IN 표현:
모든 표현:
두 방법 모두 하위 쿼리를 사용할 수 있지만 두 번째 형식은 기대하는 바가 다릅니다.
다음 사항을 고려하세요.
성능 측면에서 ANY는 IN보다 훨씬 빠르지는 않습니다. 둘 사이의 선택은 주로 필터링된 값을 제공하는 편의성에 달려 있습니다.
하위 쿼리 방법:
필터 값이 데이터베이스에 이미 존재하는 경우 하위 쿼리를 사용하거나 소스 테이블과 대상 테이블을 조인하면 효율성을 높일 수 있습니다.
배열 방법:
최고의 성능을 위해서는 배열, unnest() 또는 조인을 통해 클라이언트에서 큰 숫자를 제공하거나 VALUES를 사용하여 테이블 표현식을 제공하세요.
= 모든 구문:
배열 표현식의 경우 PostgreSQL은 배열 생성자(ARRAY[1,2,3]) 또는 배열 리터럴('{1,2,3}')을 허용합니다. 유형 안전성을 위해 명시적인 유형 변환을 사용할 수 있습니다.
<code class="language-sql">ARRAY[1,2,3]::numeric[] '{1,2,3}'::bigint[]</code>
Ruby에서 배열 전달:
Ruby에서 배열을 전달하려면 다음 구문을 사용하세요.
<code class="language-ruby">MyModel.where('id = ANY(ARRAY[?]::int[])', ids.map { |i| i})</code>
위 내용은 PostgreSQL WHERE 절에서 IN 또는 ANY를 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!