Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memadam Baris Pendua dengan Cekap dalam Netezza Tanpa Pengecam Unik?

Bagaimana untuk Memadam Baris Pendua dengan Cekap dalam Netezza Tanpa Pengecam Unik?

Barbara Streisand
Lepaskan: 2025-01-12 11:27:41
asal
475 orang telah melayarinya

How to Efficiently Delete Duplicate Rows in Netezza Without a Unique Identifier?

Alih keluar baris pendua dengan cekap tanpa pengecam unik dalam Netezza

Apabila berurusan dengan jadual besar yang mengandungi baris pendua, mencari cara paling berkesan untuk mengalih keluarnya boleh menjadi mencabar. Walaupun pertanyaan ini telah terbukti berfungsi dalam SQL, bagaimana pula dengan Netezza?

Pertanyaan SQL mentah

<code class="language-sql">WITH TempEmp AS
(
SELECT name, ROW_NUMBER() OVER(PARTITION by name, address, zipcode ORDER BY name) AS duplicateRecCount
FROM mytable
)
DELETE FROM TempEmp
WHERE duplicateRecCount > 1;</code>
Salin selepas log masuk

Penyelesaian Netezza

Pernyataan DELETE selepas klausa WITH tidak serasi dengan Netezza. Sila pertimbangkan penyelesaian berikut menggunakan kata kunci MENGGUNAKAN:

<code class="language-sql">DELETE FROM table_with_dups T1
USING table_with_dups T2
WHERE T1.ctid < T2.ctid
AND T1.name = T2.name
AND T1.address = T2.address
AND T1.zipcode = T2.zipcode;</code>
Salin selepas log masuk

Pratonton keputusan

Untuk menyemak rekod sebelum memadamkannya, gantikan DELETE dengan SELECT * dan USING dengan koma, seperti ini:

<code class="language-sql">SELECT * FROM table_with_dups T1, table_with_dups T2
WHERE T1.ctid < T2.ctid
AND T1.name = T2.name
AND T1.address = T2.address
AND T1.zipcode = T2.zipcode;</code>
Salin selepas log masuk

Nota Prestasi

Jika beberapa pendua dijangkakan, penyelesaian ini berprestasi lebih baik daripada penyelesaian menggunakan klausa NOT IN (...), yang menjana sejumlah besar baris dalam subkueri. Selain itu, jika lajur kunci mengandungi nilai NULL, gunakan COALESCE() untuk mengendalikan perbandingan, contohnya:

<code class="language-sql">AND COALESCE(T1.col_with_nulls, '[NULL]') = COALESCE(T2.col_with_nulls, '[NULL]')</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Memadam Baris Pendua dengan Cekap dalam Netezza Tanpa Pengecam Unik?. 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