Maison > base de données > tutoriel mysql > Comment sélectionner efficacement des lignes d'une table non présentes dans une autre dans PostgreSQL ?

Comment sélectionner efficacement des lignes d'une table non présentes dans une autre dans PostgreSQL ?

Linda Hamilton
Libérer: 2025-01-23 22:22:10
original
651 Les gens l'ont consulté

How to Efficiently Select Rows from One Table Not Present in Another in PostgreSQL?

Récupération des adresses IP manquantes dans PostgreSQL

Ce guide présente plusieurs méthodes pour identifier les adresses IP présentes dans la table login_log mais absentes de la table ip_location dans une base de données PostgreSQL.

Méthode 1 : NOT EXISTS

Généralement considérée comme l'approche la plus efficace dans 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>
Copier après la connexion

Méthode 2 : LEFT JOIN/IS NULL

Une alternative concise et souvent efficace :

<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>
Copier après la connexion

Méthode 3 : EXCEPT

Une méthode compacte, mais moins flexible pour les requêtes complexes :

<code class="language-sql">SELECT ip 
FROM   login_log

EXCEPT ALL  -- `ALL` preserves duplicates, potentially improving speed
SELECT ip
FROM   ip_location;</code>
Copier après la connexion

Méthode 4 : NOT IN

À utiliser avec prudence en raison de problèmes potentiels avec les valeurs NULL :

<code class="language-sql">SELECT ip 
FROM   login_log
WHERE  ip NOT IN (
   SELECT DISTINCT ip  -- `DISTINCT` is optional
   FROM   ip_location
   );</code>
Copier après la connexion

Optimisation des performances

Les performances des requêtes varient en fonction du volume de données et de l'indexation des tables. NOT EXISTS, LEFT JOIN et EXCEPT offrent généralement des performances supérieures. Assurez-vous que les index appropriés sont en place dans la colonne ip des deux tableaux pour des résultats optimaux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal