검색어를 작성하는 방법은 다음과 같습니다.
SELECT * FROM member_copy WHERE id IN (17579, 17580, 17582);
그러나 실제 질문은 id
목록의 출처입니까? id
목록이 다른 데이터베이스 쿼리의 결과 인 경우 대신 하위 선택 또는 조인을 수행해야합니다.
댓글
EXPLAIN ANALYZE VERBOSE
는 답변 @ 200_success 의 id IN (...)
양식이 내부적으로 다음과 같이 변환되었음을 보여줍니다.
SELECT * FROM member_copy WHERE id = ANY ("{17579, 17580, 17582}");
.. 따라서 시작하는 데 약간 더 빠르게 수행됩니다 (변환 필요 없음).
또한 질문의 양식이 효과적으로 수행됩니다. 굉장히 유사한.
큰 목록의 경우 배열을 해제 한 다음 JOIN
가 일반적으로 더 빠릅니다. :
SELECT m.* FROM unnest("{17579, 17580, 17582}"::int[]) id JOIN member_copy m USING (id);
목록이 is the result of another database query
이므로 둘 다 하나 쿼리에 JOIN
가 있습니다.
더 자세한 설명 :