Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memadam Baris Pendua dengan Cekap dalam Jadual SQLite Besar Tanpa Kunci Utama?

Bagaimana untuk Memadam Baris Pendua dengan Cekap dalam Jadual SQLite Besar Tanpa Kunci Utama?

DDD
Lepaskan: 2025-01-05 13:20:41
asal
224 orang telah melayarinya

How to Efficiently Delete Duplicate Rows in a Large SQLite Table Without a Primary Key?

Mengoptimumkan Pemadaman Baris Pendua dalam Pangkalan Data SQLite

Soalan:
Menghadapi jadual besar dengan lebih 36 juta baris dalam SQLite3, anda hadapi cabaran untuk mengalih keluar rekod pendua berdasarkan dua lajur (cincang dan d). Walau bagaimanapun, terdapat tangkapan: tiada lajur kunci utama wujud dalam jadual. Mencari penyelesaian yang cekap, anda bertanya tentang pendekatan yang paling berkesan untuk menangani tugas ini.

Jawapan:
Untuk menghapuskan baris pendua dengan berkesan tanpa ketiadaan kunci utama, pengecam unik diperlukan untuk setiap rekod.

Penyelesaian:
Manfaatkan lajur rowid khas SQLite3 sebagai unik kami pengecam. Lajur rowid ialah integer yang meningkat secara automatik untuk setiap baris baharu yang ditambahkan pada jadual. Menggunakan rowid, anda boleh mengekalkan rekod dengan nilai rowid terendah untuk setiap gabungan (cincang, d).

Pertanyaan SQL:
Laksanakan pertanyaan SQL berikut untuk mencapai matlamat anda:

DELETE FROM YourTable
WHERE rowid NOT IN (
    SELECT MIN(rowid)
    FROM YourTable
    GROUP BY hash, d
)
Salin selepas log masuk

Pertanyaan ini mengenal pasti dan menghapuskan semua baris dengan gabungan pendua (cincang, d), memastikan hanya satu contoh setiap gabungan kekal dalam jadual. Subkueri MIN(rowid) memastikan bahawa untuk rekod pendua, rekod dengan nilai rowid terendah dikekalkan.

Atas ialah kandungan terperinci Bagaimana untuk Memadam Baris Pendua dengan Cekap dalam Jadual SQLite Besar Tanpa Kunci Utama?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan