मुझे एक डेटाबेस विरासत में मिला है और मैं इसे साफ और गति देना चाहता हूं। मेरे पास एक मेज है जिसमें 30,000,000 पंक्तियाँ हैं, जिनमें से कई हमारे प्रोग्रामर की ओर से त्रुटि के कारण रद्दी डेटा डाली गई हैं। इससे पहले कि मैं कोई नया, अधिक अनुकूलित अनुक्रमणिका जोड़ूं, मैंने तालिका को MyISAM से InnoDB में बदल दिया और बहुत सारी पंक्तियों को हटाने के लिए देख रहा हूं जिनमें जंक डेटा शामिल है।
डेटाबेस MySQL 5.0 है और मेरे पास सर्वर तक रूट एक्सेस है। मैं पहले इन कमांड को प्रशासक और फिर phpMyAdmin के माध्यम से चला रहा था, दोनों एक ही परिणाम के साथ।
मैं जो कमांड चला रहा हूं वह है,
DELETE
FROM `tablename`
WHERE `columnname` LIKE '-%'
अनिवार्य रूप से, डैश से शुरू होने वाले इस कॉलम में कुछ भी हटाएं -
।
यह लगभग 3-5 मिनट तक चलता है और फिर जब मैं प्रक्रिया सूची देखता हूं, तो यह चला गया है।
मैं तो चला,
SELECT *
FROM `tablename`
WHERE `columnname` LIKE '-%'
और यह लाखों पंक्तियों को लौटाता है।
मेरा डिलीट स्टेटमेंट पूरा क्यों नहीं हो रहा है?
पुनश्च, मुझे पता है कि MySQL 5.0 कितना पुराना है। मैं DB को MySQL 5.6 w InnoDB (शायद MariaDB 10 w XtraDB) पर ले जाने पर काम कर रहा हूं, लेकिन जब तक ऐसा नहीं होता, तब तक मैं DB के साथ इसका उत्तर देना चाहता हूं।
-
संपादित संपादित करें, मेरा उत्तर देखें।
WHERE
।