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 )
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!