> 데이터 베이스 > MySQL 튜토리얼 > 다른 테이블에서는 누락된 IP 주소를 한 테이블에서 효율적으로 찾는 방법은 무엇입니까?

다른 테이블에서는 누락된 IP 주소를 한 테이블에서 효율적으로 찾는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2025-01-23 22:12:10
원래의
626명이 탐색했습니다.

How to Efficiently Find IP Addresses in One Table That Are Missing in Another?

두 테이블에서 누락된 IP 주소 식별

이 가이드는 login_log 열을 공유하는 ip_location 테이블에 없는 PostgreSQL ip 테이블에서 IP 주소를 효율적으로 찾는 방법을 보여줍니다.

최적의 쿼리 전략

각각 다양한 성능 특성을 지닌 여러 SQL 접근 방식을 통해 이를 달성할 수 있습니다.

1. NOT EXISTS 하위 쿼리: 고성능 솔루션

일반적으로 PostgreSQL에서 가장 빠른 방법:

<code class="language-sql">SELECT ip
FROM login_log l
WHERE NOT EXISTS (
   SELECT 1  -- Selecting 1 is more efficient than selecting ip
   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)
WHERE i.ip IS NULL;</code>
로그인 후 복사

3. EXCEPT: 간결하지만 유연성이 떨어짐

이 접근 방식은 간결하지만 복잡한 쿼리에서는 적응력이 떨어집니다.

<code class="language-sql">SELECT ip
FROM login_log
EXCEPT ALL
SELECT ip
FROM ip_location;</code>
로그인 후 복사

4. NOT IN: 효율성이 가장 낮고 주의가 필요함

가능하면 이 방법을 사용하지 마세요. 특히 NULL 열에 ip 값이 있을 수 있는 경우에는 더욱 그렇습니다. 효율성이 낮으며 예기치 않은 결과를 방지하려면 null을 신중하게 처리해야 합니다.

<code class="language-sql">SELECT ip
FROM login_log
WHERE ip NOT IN (
   SELECT DISTINCT ip
   FROM ip_location
);</code>
로그인 후 복사

쿼리의 복잡성과 성능 요구 사항에 가장 적합한 방법을 선택하세요. 간단한 시나리오의 경우 PostgreSQL에서 최적의 성능을 위해 NOT EXISTS 또는 LEFT JOIN을 사용하는 것이 좋습니다.

위 내용은 다른 테이블에서는 누락된 IP 주소를 한 테이블에서 효율적으로 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿