PostgreSQL에서 누락된 IP 주소 검색
이 가이드에서는 PostgreSQL 데이터베이스 내 login_log
테이블에 있지만 ip_location
테이블에는 없는 IP 주소를 식별하는 여러 가지 방법을 보여줍니다.
방법 1: NOT EXISTS
일반적으로 PostgreSQL에서 가장 효율적인 접근 방식으로 간주됩니다.
<code class="language-sql">SELECT ip FROM login_log l WHERE NOT EXISTS ( SELECT 1 -- A simple SELECT is sufficient here FROM ip_location WHERE ip = l.ip );</code>
방법 2: LEFT JOIN
/IS NULL
간결하고 효율적인 대안:
<code class="language-sql">SELECT l.ip FROM login_log l LEFT JOIN ip_location i USING (ip) -- Equivalent to ON i.ip = l.ip WHERE i.ip IS NULL;</code>
방법 3: EXCEPT
간단한 방법이지만 복잡한 쿼리에는 유연성이 떨어집니다.
<code class="language-sql">SELECT ip FROM login_log EXCEPT ALL -- `ALL` preserves duplicates, potentially improving speed SELECT ip FROM ip_location;</code>
방법 4: NOT IN
NULL
값:
<code class="language-sql">SELECT ip FROM login_log WHERE ip NOT IN ( SELECT DISTINCT ip -- `DISTINCT` is optional FROM ip_location );</code>
성능 최적화
쿼리 성능은 데이터 양과 테이블 인덱싱에 따라 달라집니다. NOT EXISTS
, LEFT JOIN
및 EXCEPT
은 일반적으로 뛰어난 성능을 제공합니다. 최적의 결과를 얻으려면 두 테이블의 ip
열에 적절한 인덱스가 있는지 확인하세요.
위 내용은 PostgreSQL에서 다른 테이블에 없는 한 테이블의 행을 효율적으로 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!