"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > هل يمكن للفهرس الفريد إزالة التكرارات في جدول يحتوي على التكرارات الموجودة، وكيف؟

هل يمكن للفهرس الفريد إزالة التكرارات في جدول يحتوي على التكرارات الموجودة، وكيف؟

تم النشر بتاريخ 2024-11-08
تصفح:449

Can a Unique Index Remove Duplicates in a Table with Existing Duplicates, and How?

إزالة التكرارات باستخدام فهرس فريد

في محاولة لمنع إدراج بيانات مكررة، تم إنشاء فهرس عادي عن طريق الخطأ للحقول A، B، C و D، مما أدى إلى وجود سجلات مكررة في جدول سجل 20 مليون. السؤال الذي يطرح نفسه: هل سيؤدي إضافة فهرس فريد لهذه الحقول إلى إزالة التكرارات دون المساس بالموجودة؟

تصحيح الفهرس ومعالجة التكرارات

إضافة فهرس فريد مع ستفشل عبارة ALTER TABLE بدون معدّل IGNORE نظرًا لوجود سجلات فريدة بالفعل. ومع ذلك، فإن استخدام معدل التجاهل سيؤدي إلى إزالة التكرارات.

نهج بديل لإصدارات MySQL 5.7.4 وما فوق

بالنسبة لإصدارات MySQL 5.7.4 وما فوق، حيث يكون معدل التجاهل غير مدعوم، يوصى باستخدام طريقة مختلفة:

    انسخ البيانات إلى جدول مؤقت.
  1. اقتطاع الجدول الأصلي.
  2. إنشاء فهرس فريد .
  3. انسخ البيانات مرة أخرى إلى الجدول الأصلي باستخدام INSERT IGNORE، مع تجاهل أي صفوف مكررة.

صيغة إزالة التكرارات باستخدام INSERT IGNORE

CREATE TABLE tmp_data SELECT * FROM mytable;
TRUNCATE TABLE mytable;
ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D);
INSERT IGNORE INTO mytable SELECT * FROM tmp_data;
DROP TABLE tmp_data;

اعتبارات إضافية

لا تحدد الوثائق الصف المكرر الذي سيتم الاحتفاظ به بعد استخدام معدل التجاهل. يُنصح باختبار ذلك على مجموعة بيانات أصغر قبل تطبيق الحل على جدول كبير.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3