Rumah > pangkalan data > tutorial mysql > Bagaimana dengan Pantas Mengeluarkan Pendua daripada Pangkalan Data MySQL Besar-besaran?

Bagaimana dengan Pantas Mengeluarkan Pendua daripada Pangkalan Data MySQL Besar-besaran?

Barbara Streisand
Lepaskan: 2024-12-29 22:36:12
asal
678 orang telah melayarinya

How to Quickly Remove Duplicates from a Massive MySQL Database?

MySQL: Buang Pendua daripada Pangkalan Data Besar dengan Pantas

Pertemuan dengan pangkalan data MySQL yang luas dicemari oleh entri pendua menuntut penyelesaian segera, terutamanya dalam senario di mana masa adalah pada dasarnya. Dengan kebimbangan mengenai masa pelaksanaan pertanyaan, satu pangkalan data sedemikian, yang terdiri daripada lebih sejuta baris, telah dipenuhi dengan pendua, yang berpotensi menduduki sehingga separuh daripada kapasiti storannya.

Matlamatnya adalah untuk membersihkan pangkalan data dengan pantas, mengenal pasti unik gabungan "text1" dan "text2," sambil mengekalkan satu rekod dengan nilai "text3" bukan nol untuk setiap gabungan unik. Proses ini menghalang kehilangan data dan memastikan integriti data.

Pendekatan konvensional seperti DISTINCT dan GROUP BY, walaupun berkesan pada pangkalan data yang lebih kecil, telah terbukti tidak mencukupi, dengan masa pelaksanaan pertanyaan melebihi ambang 20 minit. Oleh itu, carian sedang dijalankan untuk penyelesaian yang lebih cekap.

Satu penyelesaian sedemikian, memanfaatkan kuasa gabungan "ON DUPLICATE KEY" dan "IFNULL()", menawarkan prestasi luar biasa:

CREATE TABLE tmp LIKE yourtable;

ALTER TABLE tmp ADD UNIQUE (text1, text2);

INSERT INTO tmp SELECT * FROM yourtable
ON DUPLICATE KEY UPDATE text3=IFNULL(text3, VALUES(text3));

RENAME TABLE yourtable TO deleteme, tmp TO yourtable;

DROP TABLE deleteme;
Salin selepas log masuk

Pendekatan ini cemerlang dengan mengelak operasi intensif sumber seperti GROUP BY dan DISTINCT. Ia juga memintas perangkap prestasi yang berkaitan dengan pengisihan fail, halangan utama untuk jadual sementara yang besar. Walaupun imbasan penuh jadual asal masih tidak dapat dielakkan, penyelesaian yang dioptimumkan ini menyediakan pendekatan paling cekap untuk mengalih keluar pendua untuk pangkalan data yang besar.

Atas ialah kandungan terperinci Bagaimana dengan Pantas Mengeluarkan Pendua daripada Pangkalan Data MySQL Besar-besaran?. 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