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
Barbara Streisandasal
2025-01-12 11:27:41476semak imbas

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>

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>

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>

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>

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!

Kenyataan:
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