Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memilih Baris dengan Cekap dari Satu Jadual Tidak Hadir dalam Satu Lagi dalam PostgreSQL?

Bagaimana untuk Memilih Baris dengan Cekap dari Satu Jadual Tidak Hadir dalam Satu Lagi dalam PostgreSQL?

Linda Hamilton
Lepaskan: 2025-01-23 22:22:10
asal
651 orang telah melayarinya

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

Mengambil semula Alamat IP yang Hilang dalam PostgreSQL

Panduan ini menunjukkan beberapa kaedah untuk mengenal pasti alamat IP yang terdapat dalam jadual login_log tetapi tiada daripada jadual ip_location dalam pangkalan data PostgreSQL.

Kaedah 1: NOT EXISTS

Secara amnya dianggap sebagai pendekatan paling cekap dalam 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>
Salin selepas log masuk

Kaedah 2: LEFT JOIN/IS NULL

Alternatif yang ringkas dan selalunya cekap:

<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>
Salin selepas log masuk

Kaedah 3: EXCEPT

Kaedah padat, tetapi kurang fleksibel untuk pertanyaan kompleks:

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

EXCEPT ALL  -- `ALL` preserves duplicates, potentially improving speed
SELECT ip
FROM   ip_location;</code>
Salin selepas log masuk

Kaedah 4: NOT IN

Gunakan dengan berhati-hati kerana kemungkinan isu dengan nilai NULL:

<code class="language-sql">SELECT ip 
FROM   login_log
WHERE  ip NOT IN (
   SELECT DISTINCT ip  -- `DISTINCT` is optional
   FROM   ip_location
   );</code>
Salin selepas log masuk

Pengoptimuman Prestasi

Prestasi pertanyaan berbeza-beza bergantung pada volum data dan pengindeksan jadual. NOT EXISTS, LEFT JOIN dan EXCEPT biasanya menawarkan prestasi unggul. Pastikan indeks yang sesuai diletakkan pada lajur ip kedua-dua jadual untuk hasil yang optimum.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Baris dengan Cekap dari Satu Jadual Tidak Hadir dalam Satu Lagi dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan