2013-07-20 7 views
7

मैं truncate तालिका table_name का उपयोग कर रहा हूँ; लगभग 1 मिलियन पंक्तियों वाली एक मेज पर, लेकिन पिछले 3 घंटों से चलने में बहुत लंबा समय लग रहा है।कटा हुआ टेबल बहुत लंबा समय ले रहा है, क्या यह सामान्य है?

क्या यह सामान्य है? क्या आप किसी तालिका से सभी पंक्तियों को हटाने के लिए किसी अन्य तरीके का सुझाव दे सकते हैं, जो तेजी से हो सकता है?

+2

कौन सा इंजन? MYISAM या InnoDB – hjpotter92

+0

इसके अलावा, कृपया जांचें: http://bugs.mysql.com/bug.php?id=68184 – hjpotter92

+0

क्या कोई अन्य प्रक्रिया है जो वर्तमान में तालिका का उपयोग कर रही है? – Ben

उत्तर

30

काटना अभ्यस्त जैसे कुछ मामलों में काम करते हैं,

आप चीजों के सूचकांक तरह की और कुछ विदेशी कुंजी की कमी

आसान है जब जिस तरह से मैं सुझाव है

RENAME TABLE table_name TO t1; 

CREATE TABLE table_name LIKE t1; 

DROP TABLE t1; 

है या आप भी DELETE FROM table_name;

उपयोग कर सकते हैं 0
+2

क्रूर ... मुझे यह पसंद है :) यदि आपको वास्तव में डेटा की आवश्यकता नहीं है; यह शायद इसके बारे में जाने का सबसे अच्छा तरीका है। – Trent

+0

सहमत है, यह एक बेहतर तरीका है –

+1

@smratikatiyar: अगर यह आपके लिए काम करता है तो उत्तर स्वीकार करें। –

1

मेरा मानना ​​है कि गतिरोध आपकी क्वेरी निष्पादन के दौरान होता है, तो यह यह को मारने के लिए बेहतर है।

मैं (10k ठीक काम करता है), डेटा के बहुत सारे को नष्ट करने के लिए इस्तेमाल किसी एक क्वेरी में छोटे हिस्सा हटा कर।

तो तुम हो सकता है सही कुछ स्क्रिप्ट जो लिए यह कर देगा आप

+1

यदि ट्रंकेट धीमा है तो मैं एक ही संरचना के साथ एक नई टेबल बनाने और फिर बूढ़े को छोड़ने के बारे में सोच रहा हूं, मुझे लगता है कि यह काफी तेज होगा। कृपया इस पर अपने विचार साझा करें। –

0

मुझे बस एक छंटनी हमेशा के लिए ले जाती है (6 मिनट से अधिक) और फिर मैंने इसे रद्द कर दिया। या तो मैंने सोचा। असल में, उस कदम ने एक सेकंड से बहुत कम समय लिया था और मैंने कदम दो कदमों को रद्द कर दिया था - एक्शन आउटपुट विंडो अपडेट नहीं हुई थी।

0

यह भी एक बार MySQL सेवा या एक पूरी प्रणाली पुन: प्रारंभ कर की सिफारिश की है, तो इसके बाद के संस्करण समाधान में से कोई भी काम करती है।

संबंधित मुद्दे